{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Numerical Optimization 2: More Constraints\n",
    "\n",
    "This notebook uses the [NLopt](https://github.com/JuliaOpt/NLopt.jl) package which has well tested routines for constrained optimization.\n",
    "\n",
    "(The `Optim` package has preliminary code for similar functionality, see the IPNewton section of the documentation.)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Load Packages and Extra Functions"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "printyellow (generic function with 1 method)"
      ]
     },
     "execution_count": 1,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "using Dates, NLopt\n",
    "\n",
    "include(\"printmat.jl\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "using Plots\n",
    "\n",
    "#pyplot(size=(600,400))\n",
    "gr(size=(480,320))\n",
    "default(fmt = :svg)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Unconstrained Optimization\n",
    "\n",
    "In the example below, we want to choose $(x,y)$ so as to minimize the objective function\n",
    "\n",
    "$\n",
    "(x-2)^2 + (4y+3)^2,  \n",
    "$\n",
    "\n",
    "without any constraints. The solution should be $(x,y)=(2,-3/4)$.\n",
    "\n",
    "We use the algorithm `LN_COBYLA` which does not require us to code up the derivatives, but can still handle restrictions."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "lossfun (generic function with 1 method)"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "function lossfun(p,grad,A)    #grad is never used, but must be in function def\n",
    "    (x,y) = (p[1],p[2])       #A could be data or other things that the function depends on \n",
    "    L     = (x-2)^2 + (4*y+3)^2\n",
    "    return L\n",
    "end"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "nx = 2*41\n",
    "ny = 2*61\n",
    "x = range(1,stop=5,length=nx)\n",
    "y = range(-1,stop=0,length=ny)\n",
    "\n",
    "loss2d = fill(NaN,(nx,ny))      #matrix with loss fn values\n",
    "for i = 1:nx, j = 1:ny\n",
    "    loss2d[i,j] = lossfun([x[i];y[j]],[],0)\n",
    "end"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n",
       "<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"480\" height=\"320\" viewBox=\"0 0 1920 1280\">\n",
       "<defs>\n",
       "  <clipPath id=\"clip9000\">\n",
       "    <rect x=\"0\" y=\"0\" width=\"1920\" height=\"1280\"/>\n",
       "  </clipPath>\n",
       "</defs>\n",
       "<path clip-path=\"url(#clip9000)\" d=\"\n",
       "M0 1280 L1920 1280 L1920 0 L0 0  Z\n",
       "  \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
       "<defs>\n",
       "  <clipPath id=\"clip9001\">\n",
       "    <rect x=\"384\" y=\"0\" width=\"1345\" height=\"1280\"/>\n",
       "  </clipPath>\n",
       "</defs>\n",
       "<path clip-path=\"url(#clip9000)\" d=\"\n",
       "M243.864 1105.62 L1872.76 1105.62 L1872.76 121.675 L243.864 121.675  Z\n",
       "  \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
       "<defs>\n",
       "  <clipPath id=\"clip9002\">\n",
       "    <rect x=\"243\" y=\"121\" width=\"1630\" height=\"985\"/>\n",
       "  </clipPath>\n",
       "</defs>\n",
       "<polyline clip-path=\"url(#clip9002)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
       "  243.864,1105.62 243.864,121.675 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9002)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
       "  651.087,1105.62 651.087,121.675 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9002)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
       "  1058.31,1105.62 1058.31,121.675 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9002)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
       "  1465.53,1105.62 1465.53,121.675 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9002)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
       "  1872.76,1105.62 1872.76,121.675 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9002)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
       "  243.864,1105.62 1872.76,1105.62 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9002)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
       "  243.864,908.83 1872.76,908.83 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9002)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
       "  243.864,712.041 1872.76,712.041 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9002)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
       "  243.864,515.253 1872.76,515.253 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9002)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
       "  243.864,318.464 1872.76,318.464 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9002)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
       "  243.864,121.675 1872.76,121.675 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9000)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  243.864,1105.62 1872.76,1105.62 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9000)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  243.864,1105.62 243.864,121.675 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9000)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  243.864,1105.62 243.864,1093.81 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9000)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  651.087,1105.62 651.087,1093.81 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9000)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  1058.31,1105.62 1058.31,1093.81 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9000)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  1465.53,1105.62 1465.53,1093.81 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9000)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  1872.76,1105.62 1872.76,1093.81 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9000)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  243.864,1105.62 263.411,1105.62 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9000)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  243.864,908.83 263.411,908.83 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9000)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  243.864,712.041 263.411,712.041 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9000)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  243.864,515.253 263.411,515.253 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9000)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  243.864,318.464 263.411,318.464 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9000)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  243.864,121.675 263.411,121.675 \n",
       "  \"/>\n",
       "<g clip-path=\"url(#clip9000)\">\n",
       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 243.864, 1157.22)\" x=\"243.864\" y=\"1157.22\">1</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip9000)\">\n",
       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 651.087, 1157.22)\" x=\"651.087\" y=\"1157.22\">2</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip9000)\">\n",
       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 1058.31, 1157.22)\" x=\"1058.31\" y=\"1157.22\">3</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip9000)\">\n",
       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 1465.53, 1157.22)\" x=\"1465.53\" y=\"1157.22\">4</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip9000)\">\n",
       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 1872.76, 1157.22)\" x=\"1872.76\" y=\"1157.22\">5</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip9000)\">\n",
       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 224.664, 1123.12)\" x=\"224.664\" y=\"1123.12\">-1.0</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip9000)\">\n",
       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 224.664, 926.33)\" x=\"224.664\" y=\"926.33\">-0.8</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip9000)\">\n",
       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 224.664, 729.541)\" x=\"224.664\" y=\"729.541\">-0.6</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip9000)\">\n",
       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 224.664, 532.753)\" x=\"224.664\" y=\"532.753\">-0.4</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip9000)\">\n",
       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 224.664, 335.964)\" x=\"224.664\" y=\"335.964\">-0.2</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip9000)\">\n",
       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 224.664, 139.175)\" x=\"224.664\" y=\"139.175\">0.0</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip9000)\">\n",
       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1058.31, 73.2)\" x=\"1058.31\" y=\"73.2\">Contour plot of loss function</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip9000)\">\n",
       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:66px; text-anchor:middle;\" transform=\"rotate(0, 1058.31, 1234.68)\" x=\"1058.31\" y=\"1234.68\">x</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip9000)\">\n",
       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:66px; text-anchor:middle;\" transform=\"rotate(-90, 98.8861, 613.647)\" x=\"98.8861\" y=\"613.647\">y</text>\n",
       "</g>\n",
       "<polyline clip-path=\"url(#clip9002)\" style=\"stroke:#130a34; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  326.239,1105.62 324.303,1104.69 310.117,1097.49 304.193,1094.37 295.187,1089.36 284.084,1082.95 281.258,1081.22 268.401,1073.09 263.974,1070.18 256.427,1064.96 \n",
       "  245.134,1056.83 243.864,1055.88 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9002)\" style=\"stroke:#130a34; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  975.841,1105.62 987.926,1099.66 992.083,1097.49 1007.1,1089.36 1008.04,1088.83 1020.86,1081.22 1028.15,1076.74 1033.76,1073.09 1045.81,1064.96 1048.26,1063.25 \n",
       "  1056.95,1056.83 1067.52,1048.7 1068.36,1048.01 1077.2,1040.56 1086.43,1032.43 1088.47,1030.54 1094.92,1024.3 1102.92,1016.17 1108.58,1010.11 1110.43,1008.04 \n",
       "  1117.31,999.906 1123.81,991.774 1128.69,985.263 1129.86,983.642 1135.34,975.51 1140.45,967.379 1145.19,959.247 1148.8,952.517 1149.53,951.115 1153.36,942.983 \n",
       "  1156.84,934.852 1159.97,926.72 1162.73,918.588 1165.14,910.456 1167.19,902.325 1168.89,894.193 1168.91,894.04 1170.18,886.061 1171.12,877.929 1171.72,869.797 \n",
       "  1171.98,861.666 1171.89,853.534 1171.46,845.402 1170.69,837.27 1169.58,829.139 1168.91,825.447 1168.09,821.007 1166.21,812.875 1163.98,804.743 1161.39,796.612 \n",
       "  1158.45,788.48 1155.15,780.348 1151.49,772.216 1148.8,766.777 1147.42,764.085 1142.87,755.953 1137.94,747.821 1132.65,739.689 1128.69,734.016 1126.91,731.557 \n",
       "  1120.61,723.426 1113.92,715.294 1108.58,709.157 1106.77,707.162 1098.97,699.03 1090.77,690.899 1088.47,688.727 1081.87,682.767 1072.43,674.635 1068.36,671.28 \n",
       "  1062.29,666.503 1051.5,658.372 1048.26,656.026 1039.84,650.24 1028.15,642.499 1027.52,642.108 1014.07,633.976 1008.04,630.46 999.658,625.845 987.926,619.601 \n",
       "  984.159,617.713 967.816,609.791 967.355,609.581 948.888,601.449 947.706,600.945 928.577,593.317 927.597,592.938 907.487,585.707 905.918,585.186 887.377,579.202 \n",
       "  880.13,577.054 867.267,573.35 850.394,568.922 847.157,568.096 827.048,563.466 814.019,560.79 806.938,559.375 786.828,555.843 766.718,552.799 765.617,552.659 \n",
       "  746.609,550.304 726.499,548.288 706.389,546.746 686.279,545.679 666.169,545.086 646.06,544.967 625.95,545.323 605.84,546.153 585.73,547.458 565.621,549.237 \n",
       "  545.511,551.49 536.899,552.659 525.401,554.26 505.291,557.548 488.023,560.79 485.181,561.339 465.072,565.719 451.872,568.922 444.962,570.647 424.852,576.181 \n",
       "  421.949,577.054 404.742,582.381 396.392,585.186 384.633,589.255 373.745,593.317 364.523,596.865 353.416,601.449 344.413,605.284 334.964,609.581 324.303,614.59 \n",
       "  318.053,617.713 304.193,624.874 302.422,625.845 288.079,633.976 284.084,636.325 274.769,642.108 263.974,649.066 262.245,650.24 250.724,658.372 243.864,663.413 \n",
       "  \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9002)\" style=\"stroke:#240b4e; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  243.864,562.965 248.287,560.79 263.974,553.286 265.354,552.659 283.738,544.527 284.084,544.378 303.646,536.395 304.193,536.177 324.303,528.626 325.329,528.263 \n",
       "  344.413,521.688 349.238,520.132 364.523,515.316 375.816,512 384.633,509.471 404.742,504.121 405.775,503.868 424.852,499.297 441.095,495.736 444.962,494.907 \n",
       "  465.072,490.997 484.516,487.605 485.181,487.491 505.291,484.45 525.401,481.802 545.511,479.546 546.3,479.473 565.621,477.72 585.73,476.28 605.84,475.224 \n",
       "  625.95,474.552 646.06,474.264 666.169,474.36 686.279,474.84 706.389,475.704 726.499,476.952 746.609,478.584 755.471,479.473 766.718,480.625 786.828,483.077 \n",
       "  806.938,485.922 817.393,487.605 827.048,489.193 847.157,492.902 861.022,495.736 867.267,497.042 887.377,501.655 896.236,503.868 907.487,506.744 926.501,512 \n",
       "  927.597,512.31 947.706,518.43 952.93,520.132 967.816,525.098 976.722,528.263 987.926,532.345 998.399,536.395 1008.04,540.217 1018.31,544.527 1028.15,548.762 \n",
       "  1036.73,552.659 1048.26,558.035 1053.87,560.79 1068.36,568.096 1069.93,568.922 1084.88,577.054 1088.47,579.069 1098.91,585.186 1108.58,591.028 1112.21,593.317 \n",
       "  1124.71,601.449 1128.69,604.122 1136.49,609.581 1147.73,617.713 1148.8,618.515 1158.21,625.845 1168.3,633.976 1168.91,634.493 1177.67,642.108 1186.69,650.24 \n",
       "  1189.02,652.433 1195.12,658.372 1203.14,666.503 1209.13,672.84 1210.77,674.635 1217.87,682.767 1224.65,690.899 1229.24,696.684 1231.04,699.03 1236.97,707.162 \n",
       "  1242.6,715.294 1247.91,723.426 1249.35,725.768 1252.8,731.557 1257.34,739.689 1261.59,747.821 1265.54,755.953 1269.18,764.085 1269.46,764.759 1272.44,772.216 \n",
       "  1275.39,780.348 1278.06,788.48 1280.44,796.612 1282.53,804.743 1284.33,812.875 1285.85,821.007 1287.07,829.139 1288.01,837.27 1288.66,845.402 1289.02,853.534 \n",
       "  1289.09,861.666 1288.88,869.797 1288.37,877.929 1287.58,886.061 1286.5,894.193 1285.13,902.325 1283.47,910.456 1281.52,918.588 1279.29,926.72 1276.76,934.852 \n",
       "  1273.95,942.983 1270.85,951.115 1269.46,954.448 1267.4,959.247 1263.6,967.379 1259.5,975.51 1255.11,983.642 1250.42,991.774 1249.35,993.507 1245.29,999.906 \n",
       "  1239.82,1008.04 1234.05,1016.17 1229.24,1022.59 1227.92,1024.3 1221.3,1032.43 1214.36,1040.56 1209.13,1046.42 1207.03,1048.7 1199.17,1056.83 1190.99,1064.96 \n",
       "  1189.02,1066.84 1182.22,1073.09 1173.04,1081.22 1168.91,1084.75 1163.3,1089.36 1153.04,1097.49 1148.8,1100.73 1142.16,1105.62 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9002)\" style=\"stroke:#390962; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  1264.97,1105.62 1269.46,1101.49 1273.69,1097.49 1281.98,1089.36 1289.57,1081.64 1289.97,1081.22 1297.44,1073.09 1304.64,1064.96 1309.68,1059.03 1311.5,1056.83 \n",
       "  1317.94,1048.7 1324.1,1040.56 1329.79,1032.72 1329.99,1032.43 1335.45,1024.3 1340.65,1016.17 1345.58,1008.04 1349.9,1000.51 1350.24,999.906 1354.52,991.774 \n",
       "  1358.55,983.642 1362.32,975.51 1365.84,967.379 1369.1,959.247 1370.01,956.766 1372.04,951.115 1374.71,942.983 1377.14,934.852 1379.31,926.72 1381.24,918.588 \n",
       "  1382.92,910.456 1384.35,902.325 1385.53,894.193 1386.46,886.061 1387.14,877.929 1387.58,869.797 1387.77,861.666 1387.7,853.534 1387.39,845.402 1386.83,837.27 \n",
       "  1386.03,829.139 1384.97,821.007 1383.66,812.875 1382.11,804.743 1380.31,796.612 1378.26,788.48 1375.96,780.348 1373.41,772.216 1370.61,764.085 1370.01,762.481 \n",
       "  1367.5,755.953 1364.11,747.821 1360.47,739.689 1356.57,731.557 1352.41,723.426 1349.9,718.793 1347.95,715.294 1343.15,707.162 1338.08,699.03 1332.75,690.899 \n",
       "  1329.79,686.591 1327.08,682.767 1321.05,674.635 1314.75,666.503 1309.68,660.231 1308.13,658.372 1301.08,650.24 1293.74,642.108 1289.57,637.655 1286.02,633.976 \n",
       "  1277.87,625.845 1269.46,617.739 1269.43,617.713 1260.42,609.581 1251.11,601.449 1249.35,599.959 1241.24,593.317 1230.99,585.186 1229.24,583.837 1220.13,577.054 \n",
       "  1209.13,569.102 1208.88,568.922 1196.89,560.79 1189.02,555.599 1184.4,552.659 1171.27,544.527 1168.91,543.106 1157.35,536.395 1148.8,531.556 1142.75,528.263 \n",
       "  1128.69,520.808 1127.36,520.132 1110.99,512 1108.58,510.834 1093.58,503.868 1088.47,501.552 1075.05,495.736 1068.36,492.902 1055.25,487.605 1048.26,484.842 \n",
       "  1033.96,479.473 1028.15,477.336 1010.95,471.341 1008.04,470.348 987.926,463.86 985.783,463.209 967.816,457.86 957.858,455.077 947.706,452.297 927.597,447.152 \n",
       "  926.731,446.946 907.487,442.456 890.6,438.814 887.377,438.132 867.267,434.225 847.254,430.682 847.157,430.665 827.048,427.513 806.938,424.702 789.425,422.55 \n",
       "  786.828,422.237 766.718,420.147 746.609,418.391 726.499,416.969 706.389,415.882 686.279,415.129 666.169,414.711 646.06,414.628 625.95,414.878 605.84,415.464 \n",
       "  585.73,416.384 565.621,417.638 545.511,419.227 525.401,421.15 512.929,422.55 505.291,423.424 485.181,426.065 465.072,429.047 455.173,430.682 444.962,432.402 \n",
       "  424.852,436.135 411.651,438.814 404.742,440.243 384.633,444.758 375.594,446.946 364.523,449.679 344.413,455.006 344.16,455.077 324.303,460.808 316.477,463.209 \n",
       "  304.193,467.057 291.289,471.341 284.084,473.783 268.195,479.473 263.974,481.017 246.878,487.605 243.864,488.791 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9002)\" style=\"stroke:#4c0c6a; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  243.864,427.172 257.674,422.55 263.974,420.481 283.412,414.419 284.084,414.213 304.193,408.383 311.856,406.287 324.303,402.942 343.251,398.155 344.413,397.867 \n",
       "  364.523,393.191 379.14,390.023 384.633,388.854 404.742,384.882 421.169,381.892 424.852,381.233 444.962,377.94 465.072,374.954 474.034,373.76 485.181,372.299 \n",
       "  505.291,369.965 525.401,367.932 545.511,366.2 553.55,365.628 565.621,364.783 585.73,363.672 605.84,362.858 625.95,362.339 646.06,362.117 666.169,362.191 \n",
       "  686.279,362.561 706.389,363.228 726.499,364.191 746.609,365.45 748.911,365.628 766.718,367.028 786.828,368.911 806.938,371.094 827.048,373.579 828.353,373.76 \n",
       "  847.157,376.409 867.267,379.548 880.945,381.892 887.377,383.012 907.487,386.829 923.051,390.023 927.597,390.973 947.706,395.489 958.797,398.155 967.816,400.362 \n",
       "  987.926,405.604 990.394,406.287 1008.04,411.257 1018.64,414.419 1028.15,417.303 1044.53,422.55 1048.26,423.765 1068.36,430.665 1068.41,430.682 1088.47,438.045 \n",
       "  1090.48,438.814 1108.58,445.908 1111.12,446.946 1128.69,454.283 1130.52,455.077 1148.8,463.202 1148.82,463.209 1166.04,471.341 1168.91,472.727 1182.37,479.473 \n",
       "  1189.02,482.88 1197.91,487.605 1209.13,493.704 1212.74,495.736 1226.86,503.868 1229.24,505.274 1240.26,512 1249.35,517.678 1253.15,520.132 1265.44,528.263 \n",
       "  1269.46,530.992 1277.18,536.395 1288.49,544.527 1289.57,545.322 1299.22,552.659 1309.62,560.79 1309.68,560.837 1319.45,568.922 1329,577.054 1329.79,577.744 \n",
       "  1338.04,585.186 1346.79,593.317 1349.9,596.301 1355.12,601.449 1363.11,609.581 1370.01,616.838 1370.82,617.713 1378.09,625.845 1385.12,633.976 1390.12,639.986 \n",
       "  1391.84,642.108 1398.19,650.24 1404.3,658.372 1410.17,666.503 1410.23,666.595 1415.65,674.635 1420.89,682.767 1425.9,690.899 1430.34,698.475 1430.66,699.03 \n",
       "  1435.08,707.162 1439.27,715.294 1443.23,723.426 1446.96,731.557 1450.45,739.665 1450.46,739.689 1453.65,747.821 1456.62,755.953 1459.36,764.085 1461.88,772.216 \n",
       "  1464.17,780.348 1466.25,788.48 1468.09,796.612 1469.72,804.743 1470.56,809.653 1471.1,812.875 1472.25,821.007 1473.18,829.139 1473.89,837.27 1474.38,845.402 \n",
       "  1474.65,853.534 1474.71,861.666 1474.54,869.797 1474.16,877.929 1473.56,886.061 1472.74,894.193 1471.7,902.325 1470.56,909.716 1470.44,910.456 1468.93,918.588 \n",
       "  1467.2,926.72 1465.24,934.852 1463.05,942.983 1460.65,951.115 1458.02,959.247 1455.16,967.379 1452.08,975.51 1450.45,979.532 1448.74,983.642 1445.12,991.774 \n",
       "  1441.28,999.906 1437.2,1008.04 1432.9,1016.17 1430.34,1020.75 1428.31,1024.3 1423.42,1032.43 1418.3,1040.56 1412.94,1048.7 1410.23,1052.63 1407.26,1056.83 \n",
       "  1401.28,1064.96 1395.05,1073.09 1390.12,1079.28 1388.53,1081.22 1381.63,1089.36 1374.49,1097.49 1370.01,1102.41 1367.01,1105.62 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9002)\" style=\"stroke:#5e126e; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  1456.19,1105.62 1462.85,1097.49 1469.29,1089.36 1470.56,1087.69 1475.38,1081.22 1481.22,1073.09 1486.85,1064.96 1490.67,1059.22 1492.22,1056.83 1497.29,1048.7 \n",
       "  1502.14,1040.56 1506.78,1032.43 1510.78,1025.08 1511.19,1024.3 1515.31,1016.17 1519.22,1008.04 1522.91,999.906 1526.4,991.774 1529.69,983.642 1530.89,980.456 \n",
       "  1532.72,975.51 1535.52,967.379 1538.11,959.247 1540.51,951.115 1542.7,942.983 1544.68,934.852 1546.46,926.72 1548.04,918.588 1549.42,910.456 1550.59,902.325 \n",
       "  1551,898.859 1551.54,894.193 1552.29,886.061 1552.84,877.929 1553.19,869.797 1553.33,861.666 1553.28,853.534 1553.04,845.402 1552.59,837.27 1551.94,829.139 \n",
       "  1551.09,821.007 1551,820.27 1550.03,812.875 1548.75,804.743 1547.28,796.612 1545.6,788.48 1543.71,780.348 1541.63,772.216 1539.34,764.085 1536.84,755.953 \n",
       "  1534.14,747.821 1531.24,739.689 1530.89,738.772 1528.07,731.557 1524.68,723.426 1521.09,715.294 1517.29,707.162 1513.28,699.03 1510.78,694.218 1509.02,690.899 \n",
       "  1504.48,682.767 1499.74,674.635 1494.78,666.503 1490.67,660.043 1489.58,658.372 1484.07,650.24 1478.33,642.108 1472.38,633.976 1470.56,631.583 1466.1,625.845 \n",
       "  1459.55,617.713 1452.78,609.581 1450.45,606.879 1445.66,601.449 1438.26,593.317 1430.62,585.186 1430.34,584.896 1422.56,577.054 1414.25,568.922 1410.23,565.091 \n",
       "  1405.59,560.79 1396.58,552.659 1390.12,546.982 1387.25,544.527 1377.49,536.395 1370.01,530.315 1367.42,528.263 1356.87,520.132 1349.9,514.886 1345.96,512 \n",
       "  1334.58,503.868 1329.79,500.526 1322.73,495.736 1310.46,487.605 1309.68,487.098 1297.56,479.473 1289.57,474.551 1284.19,471.341 1270.28,463.209 1269.46,462.741 \n",
       "  1255.64,455.077 1249.35,451.665 1240.37,446.946 1229.24,441.216 1224.41,438.814 1209.13,431.359 1207.69,430.682 1190.08,422.55 1189.02,422.069 1171.5,414.419 \n",
       "  1168.91,413.309 1151.88,406.287 1148.8,405.039 1131.11,398.155 1128.69,397.232 1109.02,390.023 1108.58,389.866 1088.47,382.934 1085.31,381.892 1068.36,376.409 \n",
       "  1059.78,373.76 1048.26,370.266 1032.17,365.628 1028.15,364.487 1008.04,359.08 1001.8,357.496 987.926,354.026 968.136,349.365 967.816,349.29 947.706,344.915 \n",
       "  929.593,341.233 927.597,340.833 907.487,337.091 887.377,333.631 884.021,333.101 867.267,330.495 847.157,327.644 827.048,325.072 826.151,324.969 806.938,322.81 \n",
       "  786.828,320.824 766.718,319.113 746.609,317.675 732.148,316.837 726.499,316.515 706.389,315.638 686.279,315.031 666.169,314.694 646.06,314.626 625.95,314.829 \n",
       "  605.84,315.301 585.73,316.043 569.943,316.837 565.621,317.058 545.511,318.359 525.401,319.934 505.291,321.783 485.181,323.906 476.259,324.969 465.072,326.323 \n",
       "  444.962,329.034 424.852,332.024 418.225,333.101 404.742,335.326 384.633,338.927 372.692,341.233 364.523,342.835 344.413,347.067 334.188,349.365 324.303,351.621 \n",
       "  304.193,356.504 300.337,357.496 284.084,361.746 270.032,365.628 263.974,367.329 243.864,373.278 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9002)\" style=\"stroke:#71196d; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  243.864,324.796 263.974,319.386 273.954,316.837 284.084,314.289 304.193,309.499 307.725,308.706 324.303,305.034 344.413,300.847 345.812,300.574 364.523,296.978 \n",
       "  384.633,293.375 390.246,292.442 404.742,290.068 424.852,287.033 444.568,284.31 444.962,284.257 465.072,281.774 485.181,279.545 505.291,277.571 521.583,276.179 \n",
       "  525.401,275.857 545.511,274.413 565.621,273.22 585.73,272.278 605.84,271.587 625.95,271.148 646.06,270.959 666.169,271.022 686.279,271.336 706.389,271.901 \n",
       "  726.499,272.717 746.609,273.785 766.718,275.103 780.494,276.179 786.828,276.68 806.938,278.526 827.048,280.628 847.157,282.983 857.38,284.31 867.267,285.612 \n",
       "  887.377,288.518 907.487,291.682 911.951,292.442 927.597,295.144 947.706,298.878 956.243,300.574 967.816,302.907 987.926,307.228 994.406,308.706 1008.04,311.861 \n",
       "  1028.15,316.785 1028.35,316.837 1048.26,322.057 1058.81,324.969 1068.36,327.644 1086.94,333.101 1088.47,333.56 1108.58,339.845 1112.84,341.233 1128.69,346.493 \n",
       "  1136.99,349.365 1148.8,353.516 1159.68,357.496 1168.91,360.932 1181.06,365.628 1189.02,368.76 1201.28,373.76 1209.13,377.021 1220.45,381.892 1229.24,385.738 \n",
       "  1238.7,390.023 1249.35,394.934 1256.11,398.155 1269.46,404.635 1272.76,406.287 1288.69,414.419 1289.57,414.878 1303.88,422.55 1309.68,425.723 1318.48,430.682 \n",
       "  1329.79,437.176 1332.56,438.814 1346.05,446.946 1349.9,449.317 1359,455.077 1370.01,462.188 1371.55,463.209 1383.54,471.341 1390.12,475.895 1395.15,479.473 \n",
       "  1406.34,487.605 1410.23,490.495 1417.1,495.736 1427.53,503.868 1430.34,506.113 1437.53,512 1447.23,520.132 1450.45,522.897 1456.55,528.263 1465.56,536.395 \n",
       "  1470.56,541.025 1474.25,544.527 1482.61,552.659 1490.67,560.713 1490.75,560.79 1498.48,568.922 1506,577.054 1510.78,582.379 1513.24,585.186 1520.17,593.317 \n",
       "  1526.89,601.449 1530.89,606.443 1533.35,609.581 1539.51,617.713 1545.46,625.845 1551,633.67 1551.21,633.976 1556.64,642.108 1561.87,650.24 1566.89,658.372 \n",
       "  1571.11,665.468 1571.71,666.503 1576.24,674.635 1580.58,682.767 1584.72,690.899 1588.66,699.03 1591.22,704.572 1592.39,707.162 1595.87,715.294 1599.16,723.426 \n",
       "  1602.26,731.557 1605.17,739.689 1607.88,747.821 1610.41,755.953 1611.33,759.145 1612.72,764.085 1614.82,772.216 1616.73,780.348 1618.46,788.48 1620,796.612 \n",
       "  1621.36,804.743 1622.52,812.875 1623.5,821.007 1624.3,829.139 1624.91,837.27 1625.33,845.402 1625.56,853.534 1625.61,861.666 1625.47,869.797 1625.14,877.929 \n",
       "  1624.63,886.061 1623.92,894.193 1623.04,902.325 1621.96,910.456 1620.7,918.588 1619.26,926.72 1617.62,934.852 1615.8,942.983 1613.79,951.115 1611.6,959.247 \n",
       "  1611.33,960.166 1609.17,967.379 1606.55,975.51 1603.74,983.642 1600.73,991.774 1597.54,999.906 1594.15,1008.04 1591.22,1014.71 1590.56,1016.17 1586.71,1024.3 \n",
       "  1582.67,1032.43 1578.43,1040.56 1574,1048.7 1571.11,1053.78 1569.33,1056.83 1564.41,1064.96 1559.28,1073.09 1553.95,1081.22 1551,1085.56 1548.37,1089.36 \n",
       "  1542.51,1097.49 1536.45,1105.62 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9002)\" style=\"stroke:#83206b; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  1610.05,1105.62 1611.33,1103.78 1615.63,1097.49 1621,1089.36 1626.18,1081.22 1631.18,1073.09 1631.44,1072.65 1635.9,1064.96 1640.42,1056.83 1644.77,1048.7 \n",
       "  1648.93,1040.56 1651.55,1035.22 1652.89,1032.43 1656.61,1024.3 1660.15,1016.17 1663.51,1008.04 1666.69,999.906 1669.7,991.774 1671.66,986.133 1672.51,983.642 \n",
       "  1675.1,975.51 1677.52,967.379 1679.76,959.247 1681.83,951.115 1683.72,942.983 1685.43,934.852 1686.97,926.72 1688.33,918.588 1689.52,910.456 1690.53,902.325 \n",
       "  1691.37,894.193 1691.77,889.224 1692.02,886.061 1692.49,877.929 1692.8,869.797 1692.92,861.666 1692.88,853.534 1692.67,845.402 1692.28,837.27 1691.77,829.868 \n",
       "  1691.72,829.139 1690.97,821.007 1690.05,812.875 1688.95,804.743 1687.67,796.612 1686.22,788.48 1684.6,780.348 1682.79,772.216 1680.81,764.085 1678.66,755.953 \n",
       "  1676.33,747.821 1673.83,739.689 1671.66,733.118 1671.13,731.557 1668.22,723.426 1665.13,715.294 1661.85,707.162 1658.4,699.03 1654.77,690.899 1651.55,684.027 \n",
       "  1650.95,682.767 1646.87,674.635 1642.62,666.503 1638.18,658.372 1633.56,650.24 1631.44,646.643 1628.7,642.108 1623.61,633.976 1618.34,625.845 1612.88,617.713 \n",
       "  1611.33,615.487 1607.14,609.581 1601.18,601.449 1595.03,593.317 1591.22,588.433 1588.63,585.186 1581.96,577.054 1575.09,568.922 1571.11,564.34 1567.96,560.79 \n",
       "  1560.54,552.659 1552.92,544.527 1551,542.527 1544.97,536.395 1536.78,528.263 1530.89,522.566 1528.32,520.132 1519.51,512 1510.78,504.12 1510.49,503.868 \n",
       "  1501.06,495.736 1491.4,487.605 1490.67,486.999 1481.32,479.473 1471,471.341 1470.56,471.005 1460.2,463.209 1450.45,456.016 1449.14,455.077 1437.61,446.946 \n",
       "  1430.34,441.924 1425.72,438.814 1413.41,430.682 1410.23,428.62 1400.62,422.55 1390.12,416.048 1387.42,414.419 1373.68,406.287 1370.01,404.151 1359.41,398.155 \n",
       "  1349.9,392.874 1344.62,390.023 1329.79,382.155 1329.28,381.892 1313.22,373.76 1309.68,371.997 1296.5,365.628 1289.57,362.339 1279.05,357.496 1269.46,353.151 \n",
       "  1260.83,349.365 1249.35,344.413 1241.73,341.233 1229.24,336.102 1221.68,333.101 1209.13,328.2 1200.56,324.969 1189.02,320.687 1178.26,316.837 1168.91,313.547 \n",
       "  1154.63,308.706 1148.8,306.762 1129.5,300.574 1128.69,300.319 1108.58,294.226 1102.43,292.442 1088.47,288.453 1073.3,284.31 1068.36,282.983 1048.26,277.826 \n",
       "  1041.5,276.179 1028.15,272.968 1008.04,268.385 1006.47,268.047 987.926,264.107 967.816,260.081 966.933,259.915 947.706,256.352 927.597,252.869 920.853,251.783 \n",
       "  907.487,249.66 887.377,246.706 867.267,243.993 864.492,243.652 847.157,241.549 827.048,239.348 806.938,237.384 786.828,235.659 784.948,235.52 766.718,234.189 \n",
       "  746.609,232.956 726.499,231.957 706.389,231.194 686.279,230.665 666.169,230.372 646.06,230.313 625.95,230.489 605.84,230.9 585.73,231.546 565.621,232.427 \n",
       "  545.511,233.543 525.401,234.894 517.459,235.52 505.291,236.492 485.181,238.336 465.072,240.419 444.962,242.739 437.787,243.652 424.852,245.319 404.742,248.153 \n",
       "  384.633,251.227 381.259,251.783 364.523,254.58 344.413,258.185 335.373,259.915 324.303,262.063 304.193,266.212 295.804,268.047 284.084,270.645 263.974,275.354 \n",
       "  260.632,276.179 243.864,280.373 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9002)\" style=\"stroke:#972765; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  243.864,239.109 259.222,235.52 263.974,234.424 284.084,230.019 296.774,227.388 304.193,225.869 324.303,221.985 339.327,219.256 344.413,218.344 364.523,214.967 \n",
       "  384.633,211.819 389.413,211.125 404.742,208.927 424.852,206.27 444.962,203.839 452.682,202.993 465.072,201.651 485.181,199.697 505.291,197.966 525.401,196.459 \n",
       "  545.511,195.174 551.451,194.861 565.621,194.123 585.73,193.295 605.84,192.689 625.95,192.302 646.06,192.137 666.169,192.192 686.279,192.468 706.389,192.964 \n",
       "  726.499,193.681 746.609,194.619 750.81,194.861 766.718,195.789 786.828,197.184 806.938,198.804 827.048,200.646 847.157,202.712 849.624,202.993 867.267,205.026 \n",
       "  887.377,207.57 907.487,210.34 912.752,211.125 927.597,213.364 947.706,216.627 962.849,219.256 967.816,220.13 987.926,223.898 1005.47,227.388 1008.04,227.905 \n",
       "  1028.15,232.192 1042.94,235.52 1048.26,236.73 1068.36,241.549 1076.73,243.652 1088.47,246.645 1107.73,251.783 1108.58,252.014 1128.69,257.696 1136.22,259.915 \n",
       "  1148.8,263.673 1162.87,268.047 1168.91,269.954 1187.9,276.179 1189.02,276.552 1209.13,283.492 1211.42,284.31 1229.24,290.778 1233.67,292.442 1249.35,298.419 \n",
       "  1254.82,300.574 1269.46,306.43 1274.97,308.706 1289.57,314.828 1294.22,316.837 1309.68,323.631 1312.64,324.969 1329.79,332.858 1330.31,333.101 1347.21,341.233 \n",
       "  1349.9,342.548 1363.46,349.365 1370.01,352.714 1379.11,357.496 1390.12,363.375 1394.23,365.628 1408.8,373.76 1410.23,374.57 1422.8,381.892 1430.34,386.36 \n",
       "  1436.37,390.023 1449.51,398.155 1450.45,398.748 1462.13,406.287 1470.56,411.831 1474.4,414.419 1486.25,422.55 1490.67,425.638 1497.72,430.682 1508.86,438.814 \n",
       "  1510.78,440.242 1519.58,446.946 1530.05,455.077 1530.89,455.74 1540.1,463.209 1549.93,471.341 1551,472.246 1559.36,479.473 1568.57,487.605 1571.11,489.893 \n",
       "  1577.45,495.736 1586.07,503.868 1591.22,508.839 1594.43,512 1602.48,520.132 1610.35,528.263 1611.33,529.3 1617.89,536.395 1625.22,544.527 1631.44,551.606 \n",
       "  1632.34,552.659 1639.16,560.79 1645.79,568.922 1651.55,576.178 1652.23,577.054 1658.37,585.186 1664.33,593.317 1670.12,601.449 1671.66,603.684 1675.64,609.581 \n",
       "  1680.96,617.713 1686.11,625.845 1691.07,633.976 1691.77,635.156 1695.79,642.108 1700.31,650.24 1704.67,658.372 1708.85,666.503 1711.88,672.641 1712.84,674.635 \n",
       "  1716.61,682.767 1720.2,690.899 1723.63,699.03 1726.89,707.162 1729.98,715.294 1731.99,720.893 1732.88,723.426 1735.58,731.557 1738.11,739.689 1740.48,747.821 \n",
       "  1742.68,755.953 1744.72,764.085 1746.58,772.216 1748.29,780.348 1749.82,788.48 1751.19,796.612 1752.1,802.71 1752.39,804.743 1753.41,812.875 1754.27,821.007 \n",
       "  1754.96,829.139 1755.49,837.27 1755.86,845.402 1756.06,853.534 1756.1,861.666 1755.98,869.797 1755.7,877.929 1755.25,886.061 1754.64,894.193 1753.86,902.325 \n",
       "  1752.92,910.456 1752.1,916.555 1751.82,918.588 1750.53,926.72 1749.08,934.852 1747.46,942.983 1745.67,951.115 1743.72,959.247 1741.6,967.379 1739.32,975.51 \n",
       "  1736.87,983.642 1734.25,991.774 1731.99,998.387 1731.46,999.906 1728.45,1008.04 1725.28,1016.17 1721.94,1024.3 1718.43,1032.43 1714.75,1040.56 1711.88,1046.62 \n",
       "  1710.88,1048.7 1706.78,1056.83 1702.51,1064.96 1698.07,1073.09 1693.46,1081.22 1691.77,1084.09 1688.61,1089.36 1683.56,1097.49 1678.32,1105.62 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9002)\" style=\"stroke:#a72d5f; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  1742.36,1105.62 1747.31,1097.49 1752.08,1089.36 1752.1,1089.33 1756.61,1081.22 1760.97,1073.09 1765.17,1064.96 1769.21,1056.83 1772.21,1050.53 1773.07,1048.7 \n",
       "  1776.71,1040.56 1780.2,1032.43 1783.52,1024.3 1786.68,1016.17 1789.69,1008.04 1792.32,1000.52 1792.53,999.906 1795.16,991.774 1797.64,983.642 1799.96,975.51 \n",
       "  1802.13,967.379 1804.14,959.247 1805.99,951.115 1807.68,942.983 1809.21,934.852 1810.59,926.72 1811.81,918.588 1812.43,913.869 1812.86,910.456 1813.75,902.325 \n",
       "  1814.49,894.193 1815.07,886.061 1815.49,877.929 1815.77,869.797 1815.88,861.666 1815.84,853.534 1815.65,845.402 1815.3,837.27 1814.8,829.139 1814.14,821.007 \n",
       "  1813.33,812.875 1812.43,805.286 1812.36,804.743 1811.22,796.612 1809.92,788.48 1808.47,780.348 1806.85,772.216 1805.08,764.085 1803.15,755.953 1801.07,747.821 \n",
       "  1798.82,739.689 1796.42,731.557 1793.87,723.426 1792.32,718.788 1791.13,715.294 1788.21,707.162 1785.12,699.03 1781.88,690.899 1778.47,682.767 1774.91,674.635 \n",
       "  1772.21,668.738 1771.16,666.503 1767.21,658.372 1763.09,650.24 1758.81,642.108 1754.36,633.976 1752.1,629.975 1749.71,625.845 1744.85,617.713 1739.83,609.581 \n",
       "  1734.64,601.449 1731.99,597.425 1729.23,593.317 1723.6,585.186 1717.81,577.054 1711.88,568.971 1711.84,568.922 1705.59,560.79 1699.16,552.659 1692.57,544.527 \n",
       "  1691.77,543.566 1685.68,536.395 1678.6,528.263 1671.66,520.476 1671.34,520.132 1663.77,512 1656.01,503.868 1651.55,499.295 1648.01,495.736 1639.73,487.605 \n",
       "  1631.44,479.642 1631.26,479.473 1622.43,471.341 1613.42,463.209 1611.33,461.358 1604.07,455.077 1594.49,446.946 1591.22,444.225 1584.57,438.814 1574.39,430.682 \n",
       "  1571.11,428.108 1563.86,422.55 1553.06,414.419 1551,412.898 1541.85,406.287 1530.89,398.505 1530.38,398.155 1518.46,390.023 1510.78,384.88 1506.21,381.892 \n",
       "  1493.58,373.76 1490.67,371.921 1480.48,365.628 1470.56,359.598 1467.02,357.496 1453.08,349.365 1450.45,347.855 1438.62,341.233 1430.34,336.667 1423.7,333.101 \n",
       "  1410.23,325.974 1408.28,324.969 1392.25,316.837 1390.12,315.772 1375.59,308.706 1370.01,306.031 1358.3,300.574 1349.9,296.715 1340.33,292.442 1329.79,287.807 \n",
       "  1321.6,284.31 1309.68,279.29 1302.06,276.179 1289.57,271.147 1281.63,268.047 1269.46,263.363 1260.21,259.915 1249.35,255.924 1237.71,251.783 1229.24,248.815 \n",
       "  1214,243.652 1209.13,242.025 1189.02,235.54 1188.96,235.52 1168.91,229.373 1162.18,227.388 1148.8,223.492 1133.66,219.256 1128.69,217.886 1108.58,212.563 \n",
       "  1102.91,211.125 1088.47,207.513 1069.56,202.993 1068.36,202.712 1048.26,198.189 1032.69,194.861 1028.15,193.902 1008.04,189.875 991.411,186.729 987.926,186.078 \n",
       "  967.816,182.536 947.706,179.212 943.731,178.597 927.597,176.135 907.487,173.281 887.377,170.643 885.908,170.466 867.267,168.246 847.157,166.064 827.048,164.095 \n",
       "  806.938,162.339 806.871,162.334 786.828,160.814 766.718,159.499 746.609,158.394 726.499,157.5 706.389,156.816 686.279,156.343 666.169,156.08 646.06,156.027 \n",
       "  625.95,156.185 605.84,156.553 585.73,157.132 565.621,157.921 545.511,158.92 525.401,160.13 505.291,161.55 495.623,162.334 485.181,163.191 465.072,165.053 \n",
       "  444.962,167.128 424.852,169.417 416.417,170.466 404.742,171.935 384.633,174.681 364.523,177.643 358.479,178.597 344.413,180.846 324.303,184.279 310.809,186.729 \n",
       "  304.193,187.945 284.084,191.861 269.5,194.861 263.974,196.012 243.864,200.423 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9002)\" style=\"stroke:#ba3655; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  243.864,163.882 251.27,162.334 263.974,159.709 284.084,155.764 292.495,154.202 304.193,152.055 324.303,148.571 339.655,146.07 344.413,145.304 364.523,142.271 \n",
       "  384.633,139.444 396.178,137.939 404.742,136.835 424.852,134.446 444.962,132.26 465.072,130.278 470.393,129.807 485.181,128.513 505.291,126.955 525.401,125.598 \n",
       "  545.511,124.442 565.621,123.486 585.73,122.732 605.84,122.18 625.95,121.828 646.06,121.677 666.169,121.727 686.279,121.978 706.389,122.431 726.499,123.084 \n",
       "  746.609,123.939 766.718,124.994 786.828,126.251 806.938,127.709 827.048,129.368 831.797,129.807 847.157,131.243 867.267,133.327 887.377,135.615 906.14,137.939 \n",
       "  907.487,138.107 927.597,140.832 947.706,143.762 962.511,146.07 967.816,146.907 987.926,150.287 1008.04,153.874 1009.77,154.202 1028.15,157.71 1048.26,161.76 \n",
       "  1050.96,162.334 1068.36,166.064 1087.93,170.466 1088.47,170.589 1108.58,175.381 1121.5,178.597 1128.69,180.41 1148.8,185.696 1152.58,186.729 1168.91,191.254 \n",
       "  1181.44,194.861 1189.02,197.072 1208.59,202.993 1209.13,203.16 1229.24,209.548 1234.04,211.125 1249.35,216.226 1258.15,219.256 1269.46,223.202 1281.08,227.388 \n",
       "  1289.57,230.489 1302.93,235.52 1309.68,238.098 1323.8,243.652 1329.79,246.042 1343.77,251.783 1349.9,254.335 1362.93,259.915 1370.01,262.991 1381.33,268.047 \n",
       "  1390.12,272.026 1399.05,276.179 1410.23,281.455 1416.13,284.31 1430.34,291.294 1432.62,292.442 1448.52,300.574 1450.45,301.577 1463.85,308.706 1470.56,312.332 \n",
       "  1478.7,316.837 1490.67,323.562 1493.11,324.969 1507.03,333.101 1510.78,335.325 1520.51,341.233 1530.89,347.64 1533.62,349.365 1546.3,357.496 1551,360.56 \n",
       "  1558.6,365.628 1570.6,373.76 1571.11,374.11 1582.16,381.892 1591.22,388.385 1593.46,390.023 1604.38,398.155 1611.33,403.425 1615.03,406.287 1625.35,414.419 \n",
       "  1631.44,419.309 1635.4,422.55 1645.14,430.682 1651.55,436.133 1654.64,438.814 1663.83,446.946 1671.66,454.011 1672.82,455.077 1681.48,463.209 1689.96,471.341 \n",
       "  1691.77,473.109 1698.15,479.473 1706.12,487.605 1711.88,493.602 1713.89,495.736 1721.38,503.868 1728.7,512 1731.99,515.743 1735.78,520.132 1742.63,528.263 \n",
       "  1749.31,536.395 1752.1,539.867 1755.77,544.527 1762,552.659 1768.08,560.79 1772.21,566.466 1773.96,568.922 1779.61,577.054 1785.1,585.186 1790.42,593.317 \n",
       "  1792.32,596.299 1795.53,601.449 1800.45,609.581 1805.21,617.713 1809.82,625.845 1812.43,630.617 1814.23,633.976 1818.45,642.108 1822.51,650.24 1826.42,658.372 \n",
       "  1830.17,666.503 1832.54,671.86 1833.74,674.635 1837.13,682.767 1840.36,690.899 1843.44,699.03 1846.37,707.162 1849.14,715.294 1851.77,723.426 1852.65,726.319 \n",
       "  1854.21,731.557 1856.49,739.689 1858.62,747.821 1860.61,755.953 1862.44,764.085 1864.12,772.216 1865.65,780.348 1867.04,788.48 1868.27,796.612 1869.36,804.743 \n",
       "  1870.29,812.875 1871.08,821.007 1871.71,829.139 1872.2,837.27 1872.53,845.402 1872.72,853.534 1872.76,861.04 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9002)\" style=\"stroke:#ba3655; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  1872.76,861.874 1872.65,869.797 1872.38,877.929 1871.97,886.061 1871.41,894.193 1870.7,902.325 1869.84,910.456 1868.83,918.588 1867.67,926.72 1866.36,934.852 \n",
       "  1864.91,942.983 1863.3,951.115 1861.54,959.247 1859.63,967.379 1857.58,975.51 1855.37,983.642 1853.02,991.774 1852.65,992.972 1850.47,999.906 1847.77,1008.04 \n",
       "  1844.92,1016.17 1841.92,1024.3 1838.76,1032.43 1835.45,1040.56 1832.54,1047.42 1831.98,1048.7 1828.31,1056.83 1824.48,1064.96 1820.5,1073.09 1816.36,1081.22 \n",
       "  1812.43,1088.67 1812.06,1089.36 1807.53,1097.49 1802.85,1105.62 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9002)\" style=\"stroke:#cb4148; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  1860.32,1105.62 1864.77,1097.49 1869.07,1089.36 1872.76,1082.13 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9002)\" style=\"stroke:#cb4148; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  1872.76,637.152 1871.16,633.976 1866.94,625.845 1862.56,617.713 1858.04,609.581 1853.37,601.449 1852.65,600.237 1848.47,593.317 1843.42,585.186 1838.21,577.054 \n",
       "  1832.84,568.922 1832.54,568.468 1827.24,560.79 1821.48,552.659 1815.56,544.527 1812.43,540.329 1809.44,536.395 1803.1,528.263 1796.61,520.132 1792.32,514.884 \n",
       "  1789.92,512 1782.99,503.868 1775.9,495.736 1772.21,491.596 1768.58,487.605 1761.04,479.473 1753.33,471.341 1752.1,470.064 1745.34,463.209 1737.16,455.077 \n",
       "  1731.99,450.038 1728.75,446.946 1720.08,438.814 1711.88,431.271 1711.23,430.682 1702.04,422.55 1692.68,414.419 1691.77,413.636 1682.99,406.287 1673.1,398.155 \n",
       "  1671.66,396.993 1662.86,390.023 1652.41,381.892 1651.55,381.231 1641.59,373.76 1631.44,366.274 1630.55,365.628 1619.11,357.496 1611.33,352.057 1607.4,349.365 \n",
       "  1595.33,341.233 1591.22,338.502 1582.9,333.101 1571.11,325.557 1570.17,324.969 1556.98,316.837 1551,313.209 1543.42,308.706 1530.89,301.378 1529.48,300.574 \n",
       "  1515.06,292.442 1510.78,290.067 1500.17,284.31 1490.67,279.226 1484.84,276.179 1470.56,268.823 1469.02,268.047 1452.62,259.915 1450.45,258.856 1435.62,251.783 \n",
       "  1430.34,249.297 1418.03,243.652 1410.23,240.12 1399.79,235.52 1390.12,231.311 1380.86,227.388 1370.01,222.854 1361.16,219.256 1349.9,214.737 1340.64,211.125 \n",
       "  1329.79,206.948 1319.21,202.993 1309.68,199.473 1296.81,194.861 1289.57,192.302 1273.32,186.729 1269.46,185.423 1249.35,178.83 1248.62,178.597 1229.24,172.527 \n",
       "  1222.43,170.466 1209.13,166.49 1194.73,162.334 1189.02,160.708 1168.91,155.185 1165.19,154.202 1148.8,149.923 1133.44,146.07 1128.69,144.893 1108.58,140.112 \n",
       "  1099.03,137.939 1088.47,135.564 1068.36,131.243 1061.35,129.807 1048.26,127.156 1028.15,123.285 1019.32,121.675 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9002)\" style=\"stroke:#d84c3d; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  1171.97,121.675 1189.02,126.15 1202.44,129.807 1209.13,131.65 1229.24,137.393 1231.09,137.939 1249.35,143.402 1257.98,146.07 1269.46,149.663 1283.51,154.202 \n",
       "  1289.57,156.185 1307.8,162.334 1309.68,162.977 1329.79,170.055 1330.93,170.466 1349.9,177.427 1353,178.597 1370.01,185.096 1374.17,186.729 1390.12,193.074 \n",
       "  1394.49,194.861 1410.23,201.371 1414.05,202.993 1430.34,210 1432.89,211.125 1450.45,218.973 1451.07,219.256 1468.59,227.388 1470.56,228.315 1485.51,235.52 \n",
       "  1490.67,238.038 1501.9,243.652 1510.78,248.152 1517.78,251.783 1530.89,258.673 1533.2,259.915 1548.12,268.047 1551,269.639 1562.57,276.179 1571.11,281.072 \n",
       "  1576.64,284.31 1590.33,292.442 1591.22,292.98 1603.55,300.574 1611.33,305.432 1616.46,308.706 1629.02,316.837 1631.44,318.426 1641.19,324.969 1651.55,332.023 \n",
       "  1653.1,333.101 1664.62,341.233 1671.66,346.276 1675.88,349.365 1686.83,357.496 1691.77,361.226 1697.49,365.628 1707.88,373.76 1711.88,376.943 1717.98,381.892 \n",
       "  1727.84,390.023 1731.99,393.506 1737.42,398.155 1746.77,406.287 1752.1,411.009 1755.88,414.419 1764.72,422.55 1772.21,429.556 1773.39,430.682 1781.76,438.814 \n",
       "  1789.97,446.946 1792.32,449.316 1797.92,455.077 1805.67,463.209 1812.43,470.439 1813.25,471.341 1820.56,479.473 1827.72,487.605 1832.54,493.2 1834.68,495.736 \n",
       "  1841.41,503.868 1847.99,512 1852.65,517.89 1854.39,520.132 1860.56,528.263 1866.58,536.395 1872.45,544.527 1872.76,544.963 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9002)\" style=\"stroke:#e55c2f; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  1872.76,474.26 1870.22,471.341 1863,463.209 1855.64,455.077 1852.65,451.843 1848.04,446.946 1840.25,438.814 1832.54,430.923 1832.3,430.682 1824.06,422.55 \n",
       "  1815.67,414.419 1812.43,411.337 1807.03,406.287 1798.17,398.155 1792.32,392.872 1789.1,390.023 1779.77,381.892 1772.21,375.411 1770.24,373.76 1760.42,365.628 \n",
       "  1752.1,358.856 1750.4,357.496 1740.06,349.365 1731.99,343.12 1729.5,341.233 1718.63,333.101 1711.88,328.129 1707.5,324.969 1696.08,316.837 1691.77,313.815 \n",
       "  1684.34,308.706 1672.34,300.574 1671.66,300.121 1659.93,292.442 1651.55,287.031 1647.25,284.31 1634.21,276.179 1631.44,274.474 1620.77,268.047 1611.33,262.433 \n",
       "  1607,259.915 1592.84,251.783 1591.22,250.864 1578.21,243.652 1571.11,239.763 1563.19,235.52 1551,229.079 1547.73,227.388 1531.79,219.256 1530.89,218.801 \n",
       "  1515.3,211.125 1510.78,208.926 1498.29,202.993 1490.67,199.417 1480.73,194.861 1470.56,190.261 1462.56,186.729 1450.45,181.445 1443.76,178.597 1430.34,172.957 \n",
       "  1424.26,170.466 1410.23,164.786 1404.01,162.334 1390.12,156.921 1382.95,154.202 1370.01,149.35 1361.01,146.07 1349.9,142.065 1338.12,137.939 1329.79,135.055 \n",
       "  1314.18,129.807 1309.68,128.312 1289.57,121.827 1289.09,121.675 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9002)\" style=\"stroke:#ef6d21; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  1387.76,121.675 1390.12,122.531 1409.66,129.807 1410.23,130.023 1430.34,137.8 1430.69,137.939 1450.45,145.869 1450.94,146.07 1470.47,154.202 1470.56,154.238 \n",
       "  1489.32,162.334 1490.67,162.924 1507.53,170.466 1510.78,171.934 1525.16,178.597 1530.89,181.281 1542.25,186.729 1551,190.978 1558.82,194.861 1571.11,201.036 \n",
       "  1574.92,202.993 1590.56,211.125 1591.22,211.474 1605.68,219.256 1611.33,222.332 1620.42,227.388 1631.44,233.6 1634.78,235.52 1648.73,243.652 1651.55,245.318 \n",
       "  1662.28,251.783 1671.66,257.511 1675.52,259.915 1688.4,268.047 1691.77,270.204 1700.92,276.179 1711.88,283.428 1713.19,284.31 1725.08,292.442 1731.99,297.238 \n",
       "  1736.71,300.574 1748.04,308.706 1752.1,311.656 1759.09,316.837 1769.89,324.969 1772.21,326.738 1780.39,333.101 1790.68,341.233 1792.32,342.546 1800.66,349.365 \n",
       "  1810.46,357.496 1812.43,359.152 1819.97,365.628 1829.29,373.76 1832.54,376.636 1838.36,381.892 1847.22,390.023 1852.65,395.091 1855.87,398.155 1864.29,406.287 \n",
       "  1872.55,414.419 1872.76,414.625 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9002)\" style=\"stroke:#f68211; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  1872.76,362.114 1867.55,357.496 1858.24,349.365 1852.65,344.554 1848.72,341.233 1838.94,333.101 1832.54,327.85 1828.96,324.969 1818.71,316.837 1812.43,311.926 \n",
       "  1808.23,308.706 1797.49,300.574 1792.32,296.714 1786.49,292.442 1775.23,284.31 1772.21,282.154 1763.67,276.179 1752.1,268.195 1751.88,268.047 1739.71,259.915 \n",
       "  1731.99,254.823 1727.29,251.783 1714.56,243.652 1711.88,241.964 1701.46,235.52 1691.77,229.607 1688.06,227.388 1674.3,219.256 1671.66,217.713 1660.14,211.125 \n",
       "  1651.55,206.269 1645.63,202.993 1631.44,195.229 1630.75,194.861 1615.39,186.729 1611.33,184.605 1599.6,178.597 1591.22,174.357 1583.36,170.466 1571.11,164.467 \n",
       "  1566.66,162.334 1551,154.922 1549.45,154.202 1531.68,146.07 1530.89,145.715 1513.31,137.939 1510.78,136.834 1494.33,129.807 1490.67,128.261 1474.7,121.675 \n",
       "  \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9002)\" style=\"stroke:#fa9607; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  1553.33,121.675 1571.11,129.719 1571.3,129.807 1588.69,137.939 1591.22,139.134 1605.58,146.07 1611.33,148.882 1621.99,154.202 1631.44,158.972 1637.96,162.334 \n",
       "  1651.55,169.415 1653.52,170.466 1668.63,178.597 1671.66,180.246 1683.33,186.729 1691.77,191.474 1697.68,194.861 1711.69,202.993 1711.88,203.103 1725.27,211.125 \n",
       "  1731.99,215.194 1738.56,219.256 1751.56,227.388 1752.1,227.727 1764.17,235.52 1772.21,240.774 1776.53,243.652 1788.59,251.783 1792.32,254.334 1800.34,259.915 \n",
       "  1811.87,268.047 1812.43,268.446 1823.06,276.179 1832.54,283.172 1834.05,284.31 1844.74,292.442 1852.65,298.548 1855.23,300.574 1865.43,308.706 1872.76,314.624 \n",
       "  \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9002)\" style=\"stroke:#fbac11; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  1872.76,270.957 1868.89,268.047 1857.93,259.915 1852.65,256.044 1846.73,251.783 1835.28,243.652 1832.54,241.726 1823.53,235.52 1812.43,227.962 1811.57,227.388 \n",
       "  1799.25,219.256 1792.32,214.736 1786.68,211.125 1773.82,202.993 1772.21,201.985 1760.6,194.861 1752.1,189.709 1747.09,186.729 1733.26,178.597 1731.99,177.857 \n",
       "  1719.03,170.466 1711.88,166.435 1704.46,162.334 1691.77,155.395 1689.54,154.202 1674.2,146.07 1671.66,144.738 1658.43,137.939 1651.55,134.445 1642.23,129.807 \n",
       "  1631.44,124.491 1625.6,121.675 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9002)\" style=\"stroke:#f9c32a; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  1692.92,121.675 1708.49,129.807 1711.88,131.598 1723.66,137.939 1731.99,142.475 1738.47,146.07 1752.1,153.717 1752.95,154.202 1767.01,162.334 1772.21,165.371 \n",
       "  1780.76,170.466 1792.32,177.426 1794.23,178.597 1807.33,186.729 1812.43,189.929 1820.14,194.861 1832.54,202.878 1832.71,202.993 1844.92,211.125 1852.65,216.339 \n",
       "  1856.9,219.256 1868.6,227.388 1872.76,230.311 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9002)\" style=\"stroke:#f5d949; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  1872.76,192.135 1864.58,186.729 1852.65,178.937 1852.12,178.597 1839.3,170.466 1832.54,166.222 1826.23,162.334 1812.89,154.202 1812.43,153.925 1799.16,146.07 \n",
       "  1792.32,142.064 1785.14,137.939 1772.21,130.581 1770.82,129.807 1756.1,121.675 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9002)\" style=\"stroke:#f2ee74; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  1815.88,121.675 1829.84,129.807 1832.54,131.394 1843.46,137.939 1852.65,143.503 1856.81,146.07 1869.86,154.202 1872.76,156.026 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9002)\" style=\"stroke:#cb4148; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  282.751,121.675 263.974,125.195 243.864,129.166 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9002)\" style=\"stroke:#060419; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  574.018,642.108 565.621,643.191 545.511,646.474 526.46,650.24 525.401,650.457 505.291,655.308 494.231,658.372 485.181,660.981 468.221,666.503 465.072,667.573 \n",
       "  446.409,674.635 444.962,675.207 427.622,682.767 424.852,684.031 411.089,690.899 404.742,694.222 396.278,699.03 384.633,705.991 382.815,707.162 370.854,715.294 \n",
       "  364.523,719.848 359.886,723.426 349.958,731.557 344.413,736.397 340.88,739.689 332.726,747.821 325.145,755.953 324.303,756.93 318.504,764.085 312.452,772.216 \n",
       "  306.937,780.348 304.193,784.831 302.086,788.48 297.898,796.612 294.217,804.743 291.044,812.875 288.378,821.007 286.221,829.139 284.571,837.27 284.084,840.736 \n",
       "  283.463,845.402 282.862,853.534 282.742,861.666 283.103,869.797 283.944,877.929 284.084,878.79 285.332,886.061 287.236,894.193 289.648,902.325 292.567,910.456 \n",
       "  295.994,918.588 299.928,926.72 304.193,934.527 304.381,934.852 309.627,942.983 315.411,951.115 321.732,959.247 324.303,962.295 328.864,967.379 336.732,975.51 \n",
       "  344.413,982.912 345.223,983.642 354.845,991.774 364.523,999.464 365.119,999.906 376.753,1008.04 384.633,1013.25 389.387,1016.17 403.346,1024.3 404.742,1025.08 \n",
       "  419.142,1032.43 424.852,1035.22 436.844,1040.56 444.962,1044.03 457.038,1048.7 465.072,1051.67 480.58,1056.83 485.181,1058.3 505.291,1063.98 509.281,1064.96 \n",
       "  525.401,1068.77 545.511,1072.82 547.112,1073.09 565.621,1076.06 585.73,1078.6 605.84,1080.47 618.661,1081.22 625.95,1081.64 646.06,1082.13 666.169,1081.97 \n",
       "  684.418,1081.22 686.279,1081.14 706.389,1079.62 726.499,1077.41 746.609,1074.53 754.735,1073.09 766.718,1070.89 786.828,1066.48 792.822,1064.96 806.938,1061.23 \n",
       "  821.568,1056.83 827.048,1055.11 845.299,1048.7 847.157,1048.01 865.481,1040.56 867.267,1039.81 883.063,1032.43 887.377,1030.32 898.68,1024.3 907.487,1019.37 \n",
       "  912.777,1016.17 925.529,1008.04 927.597,1006.64 936.899,999.906 947.492,991.774 947.706,991.599 956.813,983.642 965.53,975.51 967.816,973.222 973.296,967.379 \n",
       "  980.366,959.247 986.882,951.115 987.926,949.692 992.559,942.983 997.652,934.852 1002.22,926.72 1006.27,918.588 1008.04,914.522 1009.7,910.456 1012.54,902.325 \n",
       "  1014.89,894.193 1016.74,886.061 1018.1,877.929 1018.96,869.797 1019.33,861.666 1019.21,853.534 1018.59,845.402 1017.48,837.27 1015.87,829.139 1013.78,821.007 \n",
       "  1011.18,812.875 1008.1,804.743 1008.04,804.603 1004.31,796.612 1000,788.48 995.171,780.348 989.816,772.216 987.926,769.601 983.694,764.085 976.9,755.953 \n",
       "  969.552,747.821 967.816,746.034 961.245,739.689 952.234,731.557 947.706,727.724 942.275,723.426 931.366,715.294 927.597,712.638 919.238,707.162 907.487,699.863 \n",
       "  906.036,699.03 891.139,690.899 887.377,688.942 874.452,682.767 867.267,679.489 855.591,674.635 847.157,671.28 833.851,666.503 827.048,664.162 808.187,658.372 \n",
       "  806.938,658.003 786.828,652.793 775.397,650.24 766.718,648.375 746.609,644.746 728.552,642.108 726.499,641.819 706.389,639.655 686.279,638.156 666.169,637.324 \n",
       "  646.06,637.158 625.95,637.657 605.84,638.822 585.73,640.654 574.018,642.108 \n",
       "  \"/>\n",
       "<circle clip-path=\"url(#clip9002)\" cx=\"651.087\" cy=\"859.633\" r=\"14\" fill=\"#e26f46\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"2.56\"/>\n",
       "<path clip-path=\"url(#clip9000)\" d=\"\n",
       "M1438.61 297.355 L1815.16 297.355 L1815.16 176.395 L1438.61 176.395  Z\n",
       "  \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
       "<polyline clip-path=\"url(#clip9000)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  1438.61,297.355 1815.16,297.355 1815.16,176.395 1438.61,176.395 1438.61,297.355 \n",
       "  \"/>\n",
       "<circle clip-path=\"url(#clip9000)\" cx=\"1525.01\" cy=\"236.875\" r=\"21\" fill=\"#e26f46\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"2.56\"/>\n",
       "<g clip-path=\"url(#clip9000)\">\n",
       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:start;\" transform=\"rotate(0, 1592.21, 254.375)\" x=\"1592.21\" y=\"254.375\">optimum</text>\n",
       "</g>\n",
       "</svg>\n"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "contour( x,y,loss2d',               #notice: loss2d'\n",
    "         xlims = (1,5),\n",
    "         ylims = (-1,0),\n",
    "         legend = false,\n",
    "         levels = 21,\n",
    "         title = \"Contour plot of loss function\",\n",
    "         xlabel = \"x\",\n",
    "         ylabel = \"y\" )\n",
    "\n",
    "scatter!([2],[-0.75],label=\"optimum\",legend=true)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Tell NLopt what to minimize as follows\n",
    "\n",
    "```\n",
    "min_objective!(opt,(p,g)->lossfun(p,g,0))\n",
    "```\n",
    "\n",
    "The `p` will be the parameters (over which we optimize), `g` the gradient (which is actually not used but must be there in the call) and `0` corresponds to the extra argument `A` in the definition of `lossfun`. We here use `A=0`, but in other contexts it could clearly be something else."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "minimum at [1.9999956432004986, -0.7499993454487518] and XTOL_REACHED\n"
     ]
    }
   ],
   "source": [
    "opt = Opt(:LN_COBYLA, 2)                  #unconstrained minimization\n",
    "lower_bounds!(opt,[-100,-100])            #LN_COBYLA seems to need some restrictions \n",
    "min_objective!(opt,(p,g)->lossfun(p,g,0))\n",
    "xtol_rel!(opt,1e-8)                       #set convergence tolerance to a reasonable number  \n",
    "\n",
    "(minf,minx,ret) = optimize(opt,[0.0,0.0])\n",
    "println(\"minimum at $minx and $ret\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Optimization with Bounds on the Parameters\n",
    "\n",
    "The next few cells illustrate how to impose bounds like $a \\leq x$ and $y \\leq b$."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n",
       "<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"480\" height=\"320\" viewBox=\"0 0 1920 1280\">\n",
       "<defs>\n",
       "  <clipPath id=\"clip9400\">\n",
       "    <rect x=\"0\" y=\"0\" width=\"1920\" height=\"1280\"/>\n",
       "  </clipPath>\n",
       "</defs>\n",
       "<path clip-path=\"url(#clip9400)\" d=\"\n",
       "M0 1280 L1920 1280 L1920 0 L0 0  Z\n",
       "  \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
       "<defs>\n",
       "  <clipPath id=\"clip9401\">\n",
       "    <rect x=\"384\" y=\"0\" width=\"1345\" height=\"1280\"/>\n",
       "  </clipPath>\n",
       "</defs>\n",
       "<path clip-path=\"url(#clip9400)\" d=\"\n",
       "M239.064 1108.82 L1872.76 1108.82 L1872.76 121.675 L239.064 121.675  Z\n",
       "  \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
       "<defs>\n",
       "  <clipPath id=\"clip9402\">\n",
       "    <rect x=\"239\" y=\"121\" width=\"1635\" height=\"988\"/>\n",
       "  </clipPath>\n",
       "</defs>\n",
       "<polyline clip-path=\"url(#clip9402)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
       "  239.064,1108.82 239.064,121.675 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9402)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
       "  647.487,1108.82 647.487,121.675 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9402)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
       "  1055.91,1108.82 1055.91,121.675 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9402)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
       "  1464.33,1108.82 1464.33,121.675 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9402)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
       "  1872.76,1108.82 1872.76,121.675 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9402)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
       "  239.064,1108.82 1872.76,1108.82 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9402)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
       "  239.064,911.39 1872.76,911.39 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9402)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
       "  239.064,713.961 1872.76,713.961 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9402)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
       "  239.064,516.533 1872.76,516.533 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9402)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
       "  239.064,319.104 1872.76,319.104 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9402)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
       "  239.064,121.675 1872.76,121.675 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9400)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  239.064,1108.82 1872.76,1108.82 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9400)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  239.064,1108.82 239.064,121.675 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9400)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  239.064,1108.82 239.064,1096.97 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9400)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  647.487,1108.82 647.487,1096.97 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9400)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  1055.91,1108.82 1055.91,1096.97 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9400)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  1464.33,1108.82 1464.33,1096.97 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9400)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  1872.76,1108.82 1872.76,1096.97 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9400)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  239.064,1108.82 258.668,1108.82 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9400)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  239.064,911.39 258.668,911.39 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9400)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  239.064,713.961 258.668,713.961 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9400)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  239.064,516.533 258.668,516.533 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9400)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  239.064,319.104 258.668,319.104 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9400)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  239.064,121.675 258.668,121.675 \n",
       "  \"/>\n",
       "<g clip-path=\"url(#clip9400)\">\n",
       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 239.064, 1160.42)\" x=\"239.064\" y=\"1160.42\">1</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip9400)\">\n",
       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 647.487, 1160.42)\" x=\"647.487\" y=\"1160.42\">2</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip9400)\">\n",
       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 1055.91, 1160.42)\" x=\"1055.91\" y=\"1160.42\">3</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip9400)\">\n",
       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 1464.33, 1160.42)\" x=\"1464.33\" y=\"1160.42\">4</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip9400)\">\n",
       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 1872.76, 1160.42)\" x=\"1872.76\" y=\"1160.42\">5</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip9400)\">\n",
       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 219.864, 1126.32)\" x=\"219.864\" y=\"1126.32\">-1.0</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip9400)\">\n",
       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 219.864, 928.89)\" x=\"219.864\" y=\"928.89\">-0.8</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip9400)\">\n",
       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 219.864, 731.461)\" x=\"219.864\" y=\"731.461\">-0.6</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip9400)\">\n",
       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 219.864, 534.033)\" x=\"219.864\" y=\"534.033\">-0.4</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip9400)\">\n",
       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 219.864, 336.604)\" x=\"219.864\" y=\"336.604\">-0.2</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip9400)\">\n",
       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 219.864, 139.175)\" x=\"219.864\" y=\"139.175\">0.0</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip9400)\">\n",
       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1055.91, 73.2)\" x=\"1055.91\" y=\"73.2\">Contour plot of loss function</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip9400)\">\n",
       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:66px; text-anchor:middle;\" transform=\"rotate(0, 1055.91, 1237.88)\" x=\"1055.91\" y=\"1237.88\">x</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip9400)\">\n",
       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:66px; text-anchor:middle;\" transform=\"rotate(-90, 94.0861, 615.247)\" x=\"94.0861\" y=\"615.247\">y</text>\n",
       "</g>\n",
       "<polyline clip-path=\"url(#clip9402)\" style=\"stroke:#130a34; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  321.681,1108.82 319.74,1107.89 305.512,1100.66 299.571,1097.54 290.538,1092.5 279.402,1086.07 276.568,1084.34 263.673,1076.19 259.233,1073.27 251.664,1068.03 \n",
       "  240.338,1059.87 239.064,1058.91 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9402)\" style=\"stroke:#130a34; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  973.198,1108.82 985.318,1102.84 989.488,1100.66 1004.55,1092.5 1005.49,1091.98 1018.35,1084.34 1025.66,1079.84 1031.29,1076.19 1043.38,1068.03 1045.83,1066.31 \n",
       "  1054.54,1059.87 1065.14,1051.71 1065.99,1051.03 1074.86,1043.55 1084.11,1035.39 1086.16,1033.5 1092.63,1027.24 1100.65,1019.08 1106.33,1013 1108.19,1010.92 \n",
       "  1115.09,1002.76 1121.6,994.604 1126.5,988.072 1127.67,986.445 1133.17,978.287 1138.29,970.129 1143.05,961.971 1146.67,955.219 1147.4,953.813 1151.24,945.654 \n",
       "  1154.73,937.496 1157.87,929.338 1160.64,921.18 1163.06,913.022 1165.11,904.863 1166.81,896.705 1166.84,896.552 1168.11,888.547 1169.05,880.389 1169.66,872.231 \n",
       "  1169.91,864.072 1169.83,855.914 1169.4,847.756 1168.62,839.598 1167.5,831.439 1166.84,827.735 1166.01,823.281 1164.13,815.123 1161.89,806.965 1159.3,798.807 \n",
       "  1156.34,790.648 1153.03,782.49 1149.36,774.332 1146.67,768.875 1145.28,766.174 1140.72,758.016 1135.78,749.857 1130.47,741.699 1126.5,736.007 1124.71,733.541 \n",
       "  1118.39,725.383 1111.69,717.225 1106.33,711.068 1104.51,709.066 1096.69,700.908 1088.47,692.75 1086.16,690.572 1079.54,684.592 1070.08,676.433 1065.99,673.067 \n",
       "  1059.9,668.275 1049.08,660.117 1045.83,657.764 1037.39,651.959 1025.66,644.193 1025.03,643.801 1011.54,635.642 1005.49,632.115 997.085,627.484 985.318,621.22 \n",
       "  981.541,619.326 965.149,611.378 964.687,611.168 946.166,603.01 944.98,602.503 925.794,594.851 924.811,594.471 904.642,587.216 903.069,586.693 884.473,580.69 \n",
       "  877.205,578.535 864.304,574.818 847.381,570.377 844.135,569.548 823.966,564.903 810.899,562.219 803.797,560.799 783.628,557.255 763.459,554.201 762.354,554.06 \n",
       "  743.29,551.698 723.121,549.676 702.952,548.129 682.783,547.058 662.614,546.463 642.445,546.344 622.276,546.701 602.107,547.534 581.938,548.843 561.769,550.628 \n",
       "  541.6,552.888 532.962,554.06 521.431,555.667 501.262,558.966 483.942,562.219 481.093,562.768 460.924,567.163 447.685,570.377 440.755,572.107 420.585,577.659 \n",
       "  417.674,578.535 400.416,583.879 392.041,586.693 380.247,590.775 369.328,594.851 360.078,598.411 348.939,603.01 339.909,606.857 330.433,611.168 319.74,616.193 \n",
       "  313.471,619.326 299.571,626.511 297.794,627.484 283.409,635.642 279.402,637.998 270.06,643.801 259.233,650.781 257.499,651.959 245.944,660.117 239.064,665.175 \n",
       "  \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9402)\" style=\"stroke:#240b4e; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  239.064,564.4 243.5,562.219 259.233,554.689 260.617,554.06 279.055,545.902 279.402,545.753 299.022,537.744 299.571,537.525 319.74,529.949 320.769,529.586 \n",
       "  339.909,522.989 344.748,521.427 360.078,516.597 371.405,513.269 380.247,510.732 400.416,505.365 401.452,505.111 420.585,500.525 436.876,496.953 440.755,496.121 \n",
       "  460.924,492.199 480.425,488.795 481.093,488.681 501.262,485.63 521.431,482.973 541.6,480.71 542.391,480.636 561.769,478.878 581.938,477.433 602.107,476.374 \n",
       "  622.276,475.699 642.445,475.41 662.614,475.507 682.783,475.988 702.952,476.855 723.121,478.107 743.29,479.745 752.178,480.636 763.459,481.792 783.628,484.252 \n",
       "  803.797,487.106 814.284,488.795 823.966,490.388 844.135,494.11 858.041,496.953 864.304,498.262 884.473,502.891 893.358,505.111 904.642,507.996 923.712,513.269 \n",
       "  924.811,513.58 944.98,519.721 950.219,521.427 965.149,526.41 974.081,529.586 985.318,533.681 995.822,537.744 1005.49,541.578 1015.79,545.902 1025.66,550.151 \n",
       "  1034.26,554.06 1045.83,559.454 1051.46,562.219 1065.99,569.548 1067.56,570.377 1082.55,578.535 1086.16,580.556 1096.63,586.693 1106.33,592.554 1109.97,594.851 \n",
       "  1122.51,603.01 1126.5,605.691 1134.32,611.168 1145.6,619.326 1146.67,620.131 1156.11,627.484 1166.22,635.642 1166.84,636.161 1175.63,643.801 1184.66,651.959 \n",
       "  1187.01,654.159 1193.13,660.117 1201.17,668.275 1207.18,674.633 1208.82,676.433 1215.94,684.592 1222.74,692.75 1227.35,698.554 1229.15,700.908 1235.1,709.066 \n",
       "  1240.74,717.225 1246.07,725.383 1247.52,727.732 1250.97,733.541 1255.53,741.699 1259.79,749.857 1263.75,758.016 1267.41,766.174 1267.68,766.851 1270.67,774.332 \n",
       "  1273.63,782.49 1276.31,790.648 1278.69,798.807 1280.79,806.965 1282.6,815.123 1284.12,823.281 1285.35,831.439 1286.29,839.598 1286.94,847.756 1287.3,855.914 \n",
       "  1287.37,864.072 1287.15,872.231 1286.65,880.389 1285.85,888.547 1284.77,896.705 1283.39,904.863 1281.73,913.022 1279.78,921.18 1277.54,929.338 1275.01,937.496 \n",
       "  1272.19,945.654 1269.08,953.813 1267.68,957.157 1265.61,961.971 1261.8,970.129 1257.7,978.287 1253.29,986.445 1248.58,994.604 1247.52,996.342 1243.44,1002.76 \n",
       "  1237.96,1010.92 1232.16,1019.08 1227.35,1025.52 1226.02,1027.24 1219.38,1035.39 1212.42,1043.55 1207.18,1049.43 1205.07,1051.71 1197.19,1059.87 1188.98,1068.03 \n",
       "  1187.01,1069.91 1180.19,1076.19 1170.98,1084.34 1166.84,1087.88 1161.21,1092.5 1150.92,1100.66 1146.67,1103.91 1140,1108.82 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9402)\" style=\"stroke:#390962; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  1263.17,1108.82 1267.68,1104.68 1271.92,1100.66 1280.24,1092.5 1287.85,1084.76 1288.25,1084.34 1295.75,1076.19 1302.97,1068.03 1308.02,1062.08 1309.85,1059.87 \n",
       "  1316.3,1051.71 1322.49,1043.55 1328.19,1035.68 1328.39,1035.39 1333.87,1027.24 1339.08,1019.08 1344.03,1010.92 1348.36,1003.37 1348.7,1002.76 1353,994.604 \n",
       "  1357.03,986.445 1360.82,978.287 1364.34,970.129 1367.61,961.971 1368.53,959.482 1370.57,953.813 1373.25,945.654 1375.68,937.496 1377.86,929.338 1379.79,921.18 \n",
       "  1381.47,913.022 1382.91,904.863 1384.09,896.705 1385.03,888.547 1385.71,880.389 1386.15,872.231 1386.34,864.072 1386.27,855.914 1385.96,847.756 1385.4,839.598 \n",
       "  1384.59,831.439 1383.53,823.281 1382.22,815.123 1380.66,806.965 1378.86,798.807 1376.8,790.648 1374.49,782.49 1371.94,774.332 1369.13,766.174 1368.53,764.565 \n",
       "  1366.01,758.016 1362.61,749.857 1358.96,741.699 1355.05,733.541 1350.88,725.383 1348.36,720.735 1346.4,717.225 1341.59,709.066 1336.51,700.908 1331.16,692.75 \n",
       "  1328.19,688.428 1325.48,684.592 1319.43,676.433 1313.11,668.275 1308.02,661.983 1306.47,660.117 1299.39,651.959 1292.04,643.801 1287.85,639.334 1284.29,635.642 \n",
       "  1276.12,627.484 1267.68,619.352 1267.66,619.326 1258.62,611.168 1249.28,603.01 1247.52,601.515 1239.38,594.851 1229.1,586.693 1227.35,585.34 1218.21,578.535 \n",
       "  1207.18,570.557 1206.92,570.377 1194.9,562.219 1187.01,557.01 1182.37,554.06 1169.2,545.902 1166.84,544.477 1155.24,537.744 1146.67,532.889 1140.6,529.586 \n",
       "  1126.5,522.106 1125.17,521.427 1108.74,513.269 1106.33,512.1 1091.28,505.111 1086.16,502.788 1072.7,496.953 1065.99,494.109 1052.84,488.795 1045.83,486.023 \n",
       "  1031.49,480.636 1025.66,478.492 1008.41,472.478 1005.49,471.482 985.318,464.973 983.169,464.32 965.149,458.953 955.162,456.162 944.98,453.373 924.811,448.21 \n",
       "  923.944,448.004 904.642,443.499 887.706,439.845 884.473,439.161 864.304,435.241 844.232,431.687 844.135,431.67 823.966,428.508 803.797,425.687 786.233,423.529 \n",
       "  783.628,423.215 763.459,421.117 743.29,419.356 723.121,417.929 702.952,416.839 682.783,416.084 662.614,415.664 642.445,415.58 622.276,415.832 602.107,416.419 \n",
       "  581.938,417.342 561.769,418.6 541.6,420.194 521.431,422.124 508.922,423.529 501.262,424.405 481.093,427.055 460.924,430.046 450.996,431.687 440.755,433.412 \n",
       "  420.585,437.158 407.345,439.845 400.416,441.279 380.247,445.808 371.182,448.004 360.078,450.746 339.909,456.09 339.655,456.162 319.74,461.91 311.891,464.32 \n",
       "  299.571,468.18 286.628,472.478 279.402,474.928 263.467,480.636 259.233,482.186 242.087,488.795 239.064,489.985 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9402)\" style=\"stroke:#4c0c6a; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  239.064,428.166 252.915,423.529 259.233,421.453 278.728,415.371 279.402,415.164 299.571,409.316 307.257,407.213 319.74,403.857 338.743,399.054 339.909,398.765 \n",
       "  360.078,394.074 374.739,390.896 380.247,389.722 400.416,385.738 416.892,382.738 420.585,382.077 440.755,378.774 460.924,375.778 469.912,374.58 481.093,373.114 \n",
       "  501.262,370.772 521.431,368.733 541.6,366.995 549.663,366.421 561.769,365.574 581.938,364.459 602.107,363.642 622.276,363.122 642.445,362.899 662.614,362.973 \n",
       "  682.783,363.345 702.952,364.014 723.121,364.98 743.29,366.243 745.599,366.421 763.459,367.826 783.628,369.715 803.797,371.905 823.966,374.398 825.276,374.58 \n",
       "  844.135,377.237 864.304,380.387 878.023,382.738 884.473,383.862 904.642,387.691 920.253,390.896 924.811,391.848 944.98,396.38 956.104,399.054 965.149,401.268 \n",
       "  985.318,406.527 987.794,407.213 1005.49,412.199 1016.13,415.371 1025.66,418.265 1042.09,423.529 1045.83,424.747 1065.99,431.67 1066.04,431.687 1086.16,439.074 \n",
       "  1088.17,439.845 1106.33,446.962 1108.88,448.004 1126.5,455.365 1128.33,456.162 1146.67,464.313 1146.69,464.32 1163.96,472.478 1166.84,473.869 1180.34,480.636 \n",
       "  1187.01,484.055 1195.92,488.795 1207.18,494.914 1210.8,496.953 1224.95,505.111 1227.35,506.522 1238.4,513.269 1247.52,518.966 1251.32,521.427 1263.65,529.586 \n",
       "  1267.68,532.323 1275.42,537.744 1286.77,545.902 1287.85,546.7 1297.53,554.06 1307.97,562.219 1308.02,562.265 1317.82,570.377 1327.4,578.535 1328.19,579.227 \n",
       "  1336.46,586.693 1345.24,594.851 1348.36,597.845 1353.6,603.01 1361.61,611.168 1368.53,618.448 1369.34,619.326 1376.63,627.484 1383.68,635.642 1388.7,641.671 \n",
       "  1390.42,643.801 1396.79,651.959 1402.92,660.117 1408.8,668.275 1408.87,668.367 1414.3,676.433 1419.56,684.592 1424.58,692.75 1429.04,700.351 1429.36,700.908 \n",
       "  1433.79,709.066 1437.99,717.225 1441.96,725.383 1445.7,733.541 1449.21,741.675 1449.22,741.699 1452.42,749.857 1455.39,758.016 1458.14,766.174 1460.67,774.332 \n",
       "  1462.97,782.49 1465.05,790.648 1466.9,798.807 1468.53,806.965 1469.38,811.89 1469.92,815.123 1471.07,823.281 1472,831.439 1472.71,839.598 1473.2,847.756 \n",
       "  1473.48,855.914 1473.53,864.072 1473.37,872.231 1472.99,880.389 1472.38,888.547 1471.56,896.705 1470.52,904.863 1469.38,912.279 1469.26,913.022 1467.74,921.18 \n",
       "  1466,929.338 1464.04,937.496 1461.85,945.654 1459.43,953.813 1456.8,961.971 1453.93,970.129 1450.84,978.287 1449.21,982.322 1447.49,986.445 1443.86,994.604 \n",
       "  1440.01,1002.76 1435.92,1010.92 1431.6,1019.08 1429.04,1023.68 1427,1027.24 1422.1,1035.39 1416.96,1043.55 1411.58,1051.71 1408.87,1055.66 1405.89,1059.87 \n",
       "  1399.89,1068.03 1393.64,1076.19 1388.7,1082.4 1387.11,1084.34 1380.19,1092.5 1373.02,1100.66 1368.53,1105.6 1365.52,1108.82 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9402)\" style=\"stroke:#5e126e; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  1454.96,1108.82 1461.64,1100.66 1468.1,1092.5 1469.38,1090.83 1474.21,1084.34 1480.07,1076.19 1485.71,1068.03 1489.54,1062.26 1491.1,1059.87 1496.18,1051.71 \n",
       "  1501.05,1043.55 1505.7,1035.39 1509.71,1028.02 1510.13,1027.24 1514.26,1019.08 1518.17,1010.92 1521.88,1002.76 1525.38,994.604 1528.67,986.445 1529.88,983.249 \n",
       "  1531.71,978.287 1534.52,970.129 1537.13,961.971 1539.53,953.813 1541.72,945.654 1543.71,937.496 1545.5,929.338 1547.08,921.18 1548.46,913.022 1549.64,904.863 \n",
       "  1550.05,901.387 1550.6,896.705 1551.34,888.547 1551.89,880.389 1552.24,872.231 1552.39,864.072 1552.34,855.914 1552.09,847.756 1551.64,839.598 1551,831.439 \n",
       "  1550.15,823.281 1550.05,822.542 1549.08,815.123 1547.8,806.965 1546.32,798.807 1544.63,790.648 1542.74,782.49 1540.65,774.332 1538.35,766.174 1535.85,758.016 \n",
       "  1533.14,749.857 1530.23,741.699 1529.88,740.779 1527.06,733.541 1523.66,725.383 1520.05,717.225 1516.24,709.066 1512.22,700.908 1509.71,696.08 1507.94,692.75 \n",
       "  1503.4,684.592 1498.64,676.433 1493.67,668.275 1489.54,661.794 1488.45,660.117 1482.92,651.959 1477.17,643.801 1471.2,635.642 1469.38,633.241 1464.9,627.484 \n",
       "  1458.33,619.326 1451.54,611.168 1449.21,608.457 1444.4,603.01 1436.98,594.851 1429.32,586.693 1429.04,586.402 1421.23,578.535 1412.9,570.377 1408.87,566.533 \n",
       "  1404.22,562.219 1395.18,554.06 1388.7,548.365 1385.82,545.902 1376.03,537.744 1368.53,531.644 1365.93,529.586 1355.35,521.427 1348.36,516.165 1344.4,513.269 \n",
       "  1332.99,505.111 1328.19,501.758 1321.11,496.953 1308.81,488.795 1308.02,488.286 1295.87,480.636 1287.85,475.698 1282.46,472.478 1268.5,464.32 1267.68,463.851 \n",
       "  1253.82,456.162 1247.52,452.738 1238.5,448.004 1227.35,442.255 1222.5,439.845 1207.18,432.366 1205.73,431.687 1188.07,423.529 1187.01,423.046 1169.43,415.371 \n",
       "  1166.84,414.258 1149.76,407.213 1146.67,405.961 1128.92,399.054 1126.5,398.129 1106.77,390.896 1106.33,390.738 1086.16,383.784 1082.99,382.738 1065.99,377.237 \n",
       "  1057.38,374.58 1045.83,371.074 1029.69,366.421 1025.66,365.277 1005.49,359.852 999.237,358.263 985.318,354.782 965.47,350.105 965.149,350.031 944.98,345.641 \n",
       "  926.813,341.947 924.811,341.546 904.642,337.792 884.473,334.321 881.107,333.789 864.304,331.174 844.135,328.314 823.966,325.733 823.067,325.63 803.797,323.464 \n",
       "  783.628,321.472 763.459,319.755 743.29,318.312 728.787,317.472 723.121,317.149 702.952,316.269 682.783,315.66 662.614,315.322 642.445,315.254 622.276,315.457 \n",
       "  602.107,315.931 581.938,316.675 566.104,317.472 561.769,317.694 541.6,318.999 521.431,320.579 501.262,322.434 481.093,324.564 472.144,325.63 460.924,326.989 \n",
       "  440.755,329.709 420.585,332.708 413.938,333.789 400.416,336.021 380.247,339.633 368.271,341.947 360.078,343.555 339.909,347.8 329.654,350.105 319.74,352.369 \n",
       "  299.571,357.268 295.703,358.263 279.402,362.527 265.309,366.421 259.233,368.128 239.064,374.096 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9402)\" style=\"stroke:#71196d; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  239.064,325.456 259.233,320.029 269.243,317.472 279.402,314.915 299.571,310.11 303.113,309.314 319.74,305.631 339.909,301.43 341.313,301.156 360.078,297.548 \n",
       "  380.247,293.933 385.877,292.998 400.416,290.616 420.585,287.571 440.36,284.839 440.755,284.786 460.924,282.294 481.093,280.059 501.262,278.078 517.602,276.681 \n",
       "  521.431,276.358 541.6,274.909 561.769,273.713 581.938,272.768 602.107,272.075 622.276,271.634 642.445,271.445 662.614,271.508 682.783,271.823 702.952,272.39 \n",
       "  723.121,273.209 743.29,274.279 763.459,275.602 777.275,276.681 783.628,277.184 803.797,279.037 823.966,281.145 844.135,283.508 854.388,284.839 864.304,286.145 \n",
       "  884.473,289.061 904.642,292.235 909.119,292.998 924.811,295.708 944.98,299.454 953.542,301.156 965.149,303.497 985.318,307.831 991.817,309.314 1005.49,312.479 \n",
       "  1025.66,317.419 1025.86,317.472 1045.83,322.708 1056.42,325.63 1065.99,328.314 1084.62,333.789 1086.16,334.25 1106.33,340.554 1110.6,341.947 1126.5,347.224 \n",
       "  1134.83,350.105 1146.67,354.27 1157.58,358.263 1166.84,361.71 1179.02,366.421 1187.01,369.563 1199.3,374.58 1207.18,377.851 1218.53,382.738 1227.35,386.597 \n",
       "  1236.83,390.896 1247.52,395.823 1254.29,399.054 1267.68,405.556 1270.99,407.213 1286.97,415.371 1287.85,415.831 1302.2,423.529 1308.02,426.712 1316.85,431.687 \n",
       "  1328.19,438.202 1330.97,439.845 1344.49,448.004 1348.36,450.383 1357.49,456.162 1368.53,463.296 1370.07,464.32 1382.1,472.478 1388.7,477.047 1393.74,480.636 \n",
       "  1404.97,488.795 1408.87,491.694 1415.76,496.953 1426.22,505.111 1429.04,507.363 1436.25,513.269 1445.98,521.427 1449.21,524.202 1455.32,529.586 1464.36,537.744 \n",
       "  1469.38,542.388 1473.08,545.902 1481.46,554.06 1489.54,562.141 1489.62,562.219 1497.37,570.377 1504.92,578.535 1509.71,583.877 1512.18,586.693 1519.13,594.851 \n",
       "  1525.87,603.01 1529.88,608.019 1532.35,611.168 1538.52,619.326 1544.5,627.484 1550.05,635.335 1550.26,635.642 1555.71,643.801 1560.95,651.959 1565.99,660.117 \n",
       "  1570.22,667.236 1570.82,668.275 1575.37,676.433 1579.72,684.592 1583.87,692.75 1587.83,700.908 1590.39,706.468 1591.56,709.066 1595.05,717.225 1598.35,725.383 \n",
       "  1601.46,733.541 1604.38,741.699 1607.1,749.857 1609.64,758.016 1610.56,761.218 1611.95,766.174 1614.06,774.332 1615.98,782.49 1617.71,790.648 1619.26,798.807 \n",
       "  1620.62,806.965 1621.79,815.123 1622.77,823.281 1623.57,831.439 1624.18,839.598 1624.6,847.756 1624.83,855.914 1624.88,864.072 1624.74,872.231 1624.41,880.389 \n",
       "  1623.89,888.547 1623.19,896.705 1622.3,904.863 1621.22,913.022 1619.96,921.18 1618.51,929.338 1616.87,937.496 1615.04,945.654 1613.03,953.813 1610.83,961.971 \n",
       "  1610.56,962.893 1608.4,970.129 1605.77,978.287 1602.94,986.445 1599.93,994.604 1596.73,1002.76 1593.33,1010.92 1590.39,1017.61 1589.73,1019.08 1585.87,1027.24 \n",
       "  1581.82,1035.39 1577.57,1043.55 1573.12,1051.71 1570.22,1056.81 1568.44,1059.87 1563.5,1068.03 1558.35,1076.19 1553.01,1084.34 1550.05,1088.7 1547.41,1092.5 \n",
       "  1541.54,1100.66 1535.46,1108.82 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9402)\" style=\"stroke:#83206b; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  1609.27,1108.82 1610.56,1106.98 1614.87,1100.66 1620.26,1092.5 1625.46,1084.34 1630.47,1076.19 1630.73,1075.75 1635.2,1068.03 1639.74,1059.87 1644.1,1051.71 \n",
       "  1648.27,1043.55 1650.9,1038.19 1652.24,1035.39 1655.97,1027.24 1659.52,1019.08 1662.89,1010.92 1666.09,1002.76 1669.1,994.604 1671.07,988.944 1671.92,986.445 \n",
       "  1674.52,978.287 1676.94,970.129 1679.19,961.971 1681.26,953.813 1683.16,945.654 1684.88,937.496 1686.42,929.338 1687.79,921.18 1688.98,913.022 1689.99,904.863 \n",
       "  1690.83,896.705 1691.23,891.72 1691.49,888.547 1691.96,880.389 1692.27,872.231 1692.4,864.072 1692.35,855.914 1692.14,847.756 1691.75,839.598 1691.23,832.171 \n",
       "  1691.18,831.439 1690.43,823.281 1689.51,815.123 1688.41,806.965 1687.13,798.807 1685.67,790.648 1684.04,782.49 1682.23,774.332 1680.25,766.174 1678.09,758.016 \n",
       "  1675.75,749.857 1673.24,741.699 1671.07,735.106 1670.54,733.541 1667.62,725.383 1664.51,717.225 1661.23,709.066 1657.77,700.908 1654.13,692.75 1650.9,685.856 \n",
       "  1650.29,684.592 1646.21,676.433 1641.94,668.275 1637.49,660.117 1632.86,651.959 1630.73,648.351 1627.99,643.801 1622.88,635.642 1617.59,627.484 1612.11,619.326 \n",
       "  1610.56,617.093 1606.36,611.168 1600.38,603.01 1594.21,594.851 1590.39,589.951 1587.79,586.693 1581.1,578.535 1574.21,570.377 1570.22,565.779 1567.06,562.219 \n",
       "  1559.62,554.06 1551.98,545.902 1550.05,543.895 1544.01,537.744 1535.79,529.586 1529.88,523.87 1527.3,521.427 1518.47,513.269 1509.71,505.363 1509.43,505.111 \n",
       "  1499.96,496.953 1490.28,488.795 1489.54,488.187 1480.17,480.636 1469.81,472.478 1469.38,472.141 1458.99,464.32 1449.21,457.104 1447.9,456.162 1436.33,448.004 \n",
       "  1429.04,442.965 1424.41,439.845 1412.06,431.687 1408.87,429.618 1399.22,423.529 1388.7,417.005 1385.99,415.371 1372.21,407.213 1368.53,405.07 1357.89,399.054 \n",
       "  1348.36,393.756 1343.07,390.896 1328.19,383.002 1327.68,382.738 1311.57,374.58 1308.02,372.811 1294.8,366.421 1287.85,363.121 1277.31,358.263 1267.68,353.904 \n",
       "  1259.02,350.105 1247.52,345.137 1239.87,341.947 1227.35,336.799 1219.76,333.789 1207.18,328.871 1198.58,325.63 1187.01,321.334 1176.21,317.472 1166.84,314.171 \n",
       "  1152.51,309.314 1146.67,307.364 1127.31,301.156 1126.5,300.9 1106.33,294.787 1100.16,292.998 1086.16,288.996 1070.94,284.839 1065.99,283.508 1045.83,278.334 \n",
       "  1039.05,276.681 1025.66,273.46 1005.49,268.862 1003.92,268.523 985.318,264.57 965.149,260.531 964.263,260.365 944.98,256.79 924.811,253.296 918.048,252.207 \n",
       "  904.642,250.076 884.473,247.112 864.304,244.391 861.52,244.048 844.135,241.939 823.966,239.73 803.797,237.761 783.628,236.03 781.743,235.89 763.459,234.555 \n",
       "  743.29,233.318 723.121,232.316 702.952,231.55 682.783,231.02 662.614,230.725 642.445,230.666 622.276,230.843 602.107,231.256 581.938,231.904 561.769,232.787 \n",
       "  541.6,233.907 521.431,235.262 513.465,235.89 501.262,236.865 481.093,238.716 460.924,240.805 440.755,243.133 433.559,244.048 420.585,245.721 400.416,248.564 \n",
       "  380.247,251.648 376.864,252.207 360.078,255.012 339.909,258.629 330.843,260.365 319.74,262.52 299.571,266.682 291.157,268.523 279.402,271.13 259.233,275.854 \n",
       "  255.881,276.681 239.064,280.889 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9402)\" style=\"stroke:#972765; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  239.064,239.491 254.468,235.89 259.233,234.79 279.402,230.372 292.13,227.732 299.571,226.208 319.74,222.311 334.809,219.574 339.909,218.659 360.078,215.27 \n",
       "  380.247,212.112 385.042,211.415 400.416,209.211 420.585,206.545 440.755,204.106 448.497,203.257 460.924,201.911 481.093,199.951 501.262,198.214 521.431,196.702 \n",
       "  541.6,195.413 547.557,195.099 561.769,194.358 581.938,193.528 602.107,192.92 622.276,192.532 642.445,192.366 662.614,192.421 682.783,192.698 702.952,193.196 \n",
       "  723.121,193.916 743.29,194.856 747.504,195.099 763.459,196.03 783.628,197.43 803.797,199.054 823.966,200.903 844.135,202.976 846.609,203.257 864.304,205.297 \n",
       "  884.473,207.849 904.642,210.628 909.923,211.415 924.811,213.662 944.98,216.936 960.167,219.574 965.149,220.45 985.318,224.231 1002.91,227.732 1005.49,228.251 \n",
       "  1025.66,232.552 1040.5,235.89 1045.83,237.104 1065.99,241.939 1074.38,244.048 1086.16,247.052 1105.48,252.207 1106.33,252.438 1126.5,258.138 1134.05,260.365 \n",
       "  1146.67,264.135 1160.77,268.523 1166.84,270.436 1185.88,276.681 1187.01,277.056 1207.18,284.019 1209.47,284.839 1227.35,291.328 1231.79,292.998 1247.52,298.993 \n",
       "  1253,301.156 1267.68,307.031 1273.21,309.314 1287.85,315.456 1292.51,317.472 1308.02,324.288 1310.99,325.63 1328.19,333.545 1328.71,333.789 1345.66,341.947 \n",
       "  1348.36,343.266 1361.96,350.105 1368.53,353.465 1377.66,358.263 1388.7,364.161 1392.82,366.421 1407.44,374.58 1408.87,375.393 1421.47,382.738 1429.04,387.221 \n",
       "  1435.08,390.896 1448.26,399.054 1449.21,399.649 1460.92,407.213 1469.38,412.774 1473.23,415.371 1485.11,423.529 1489.54,426.626 1496.61,431.687 1507.79,439.845 \n",
       "  1509.71,441.278 1518.54,448.004 1529.04,456.162 1529.88,456.826 1539.12,464.32 1548.98,472.478 1550.05,473.386 1558.44,480.636 1567.68,488.795 1570.22,491.09 \n",
       "  1576.57,496.953 1585.22,505.111 1590.39,510.098 1593.6,513.269 1601.69,521.427 1609.58,529.586 1610.56,530.625 1617.14,537.744 1624.49,545.902 1630.73,553.005 \n",
       "  1631.64,554.06 1638.47,562.219 1645.12,570.377 1650.9,577.656 1651.58,578.535 1657.74,586.693 1663.72,594.851 1669.52,603.01 1671.07,605.251 1675.06,611.168 \n",
       "  1680.4,619.326 1685.56,627.484 1690.54,635.642 1691.23,636.826 1695.26,643.801 1699.81,651.959 1704.17,660.117 1708.37,668.275 1711.4,674.433 1712.37,676.433 \n",
       "  1716.15,684.592 1719.75,692.75 1723.19,700.908 1726.46,709.066 1729.56,717.225 1731.57,722.842 1732.47,725.383 1735.18,733.541 1737.72,741.699 1740.09,749.857 \n",
       "  1742.3,758.016 1744.34,766.174 1746.21,774.332 1747.92,782.49 1749.46,790.648 1750.84,798.807 1751.74,804.925 1752.04,806.965 1753.06,815.123 1753.92,823.281 \n",
       "  1754.61,831.439 1755.15,839.598 1755.51,847.756 1755.72,855.914 1755.76,864.072 1755.64,872.231 1755.35,880.389 1754.9,888.547 1754.29,896.705 1753.51,904.863 \n",
       "  1752.57,913.022 1751.74,919.14 1751.46,921.18 1750.17,929.338 1748.71,937.496 1747.09,945.654 1745.3,953.813 1743.34,961.971 1741.21,970.129 1738.92,978.287 \n",
       "  1736.47,986.445 1733.84,994.604 1731.57,1001.24 1731.04,1002.76 1728.03,1010.92 1724.85,1019.08 1721.49,1027.24 1717.97,1035.39 1714.28,1043.55 1711.4,1049.63 \n",
       "  1710.4,1051.71 1706.29,1059.87 1702.01,1068.03 1697.56,1076.19 1692.93,1084.34 1691.23,1087.22 1688.07,1092.5 1683,1100.66 1677.75,1108.82 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9402)\" style=\"stroke:#a72d5f; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  1741.98,1108.82 1746.94,1100.66 1751.73,1092.5 1751.74,1092.47 1756.27,1084.34 1760.64,1076.19 1764.85,1068.03 1768.9,1059.87 1771.91,1053.55 1772.77,1051.71 \n",
       "  1776.43,1043.55 1779.92,1035.39 1783.26,1027.24 1786.43,1019.08 1789.44,1010.92 1792.08,1003.38 1792.29,1002.76 1794.94,994.604 1797.42,986.445 1799.75,978.287 \n",
       "  1801.92,970.129 1803.93,961.971 1805.79,953.813 1807.49,945.654 1809.03,937.496 1810.41,929.338 1811.63,921.18 1812.25,916.445 1812.69,913.022 1813.58,904.863 \n",
       "  1814.32,896.705 1814.9,888.547 1815.33,880.389 1815.6,872.231 1815.71,864.072 1815.68,855.914 1815.48,847.756 1815.13,839.598 1814.63,831.439 1813.97,823.281 \n",
       "  1813.15,815.123 1812.25,807.51 1812.18,806.965 1811.04,798.807 1809.74,790.648 1808.28,782.49 1806.66,774.332 1804.88,766.174 1802.95,758.016 1800.86,749.857 \n",
       "  1798.61,741.699 1796.2,733.541 1793.63,725.383 1792.08,720.73 1790.89,717.225 1787.96,709.066 1784.86,700.908 1781.61,692.75 1778.19,684.592 1774.62,676.433 \n",
       "  1771.91,670.517 1770.87,668.275 1766.9,660.117 1762.77,651.959 1758.47,643.801 1754.02,635.642 1751.74,631.628 1749.35,627.484 1744.48,619.326 1739.44,611.168 \n",
       "  1734.23,603.01 1731.57,598.972 1728.81,594.851 1723.16,586.693 1717.35,578.535 1711.4,570.425 1711.37,570.377 1705.1,562.219 1698.65,554.06 1692.04,545.902 \n",
       "  1691.23,544.938 1685.13,537.744 1678.03,529.586 1671.07,521.773 1670.75,521.427 1663.15,513.269 1655.37,505.111 1650.9,500.523 1647.34,496.953 1639.04,488.795 \n",
       "  1630.73,480.806 1630.55,480.636 1621.7,472.478 1612.66,464.32 1610.56,462.463 1603.28,456.162 1593.67,448.004 1590.39,445.274 1583.73,439.845 1573.51,431.687 \n",
       "  1570.22,429.105 1562.95,423.529 1552.12,415.371 1550.05,413.845 1540.88,407.213 1529.88,399.406 1529.38,399.054 1517.41,390.896 1509.71,385.736 1505.13,382.738 \n",
       "  1492.46,374.58 1489.54,372.735 1479.33,366.421 1469.38,360.371 1465.82,358.263 1451.84,350.105 1449.21,348.591 1437.35,341.947 1429.04,337.366 1422.38,333.789 \n",
       "  1408.87,326.639 1406.91,325.63 1390.84,317.472 1388.7,316.404 1374.13,309.314 1368.53,306.63 1356.79,301.156 1348.36,297.284 1338.76,292.998 1328.19,288.348 \n",
       "  1319.98,284.839 1308.02,279.803 1300.38,276.681 1287.85,271.633 1279.89,268.523 1267.68,263.824 1258.4,260.365 1247.52,256.36 1235.83,252.207 1227.35,249.229 \n",
       "  1212.06,244.048 1207.18,242.416 1187.01,235.91 1186.95,235.89 1166.84,229.723 1160.09,227.732 1146.67,223.823 1131.48,219.574 1126.5,218.199 1106.33,212.858 \n",
       "  1100.64,211.415 1086.16,207.793 1067.19,203.257 1065.99,202.975 1045.83,198.438 1030.21,195.099 1025.66,194.137 1005.49,190.097 988.814,186.941 985.318,186.287 \n",
       "  965.149,182.734 944.98,179.399 940.993,178.783 924.811,176.312 904.642,173.449 884.473,170.802 883,170.624 864.304,168.397 844.135,166.208 823.966,164.233 \n",
       "  803.797,162.471 803.73,162.466 783.628,160.941 763.459,159.622 743.29,158.514 723.121,157.617 702.952,156.931 682.783,156.456 662.614,156.192 642.445,156.139 \n",
       "  622.276,156.297 602.107,156.667 581.938,157.247 561.769,158.039 541.6,159.041 521.431,160.255 501.262,161.68 491.565,162.466 481.093,163.326 460.924,165.194 \n",
       "  440.755,167.276 420.585,169.572 412.126,170.624 400.416,172.098 380.247,174.854 360.078,177.825 354.017,178.783 339.909,181.039 319.74,184.483 306.207,186.941 \n",
       "  299.571,188.161 279.402,192.089 264.775,195.099 259.233,196.253 239.064,200.679 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9402)\" style=\"stroke:#ba3655; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  239.064,164.019 246.492,162.466 259.233,159.833 279.402,155.875 287.838,154.308 299.571,152.153 319.74,148.658 335.137,146.15 339.909,145.381 360.078,142.338 \n",
       "  380.247,139.502 391.827,137.992 400.416,136.884 420.585,134.487 440.755,132.294 460.924,130.306 466.26,129.833 481.093,128.535 501.262,126.972 521.431,125.61 \n",
       "  541.6,124.451 561.769,123.492 581.938,122.736 602.107,122.181 622.276,121.828 642.445,121.677 662.614,121.727 682.783,121.979 702.952,122.433 723.121,123.089 \n",
       "  743.29,123.946 763.459,125.005 783.628,126.266 803.797,127.728 823.966,129.393 828.73,129.833 844.135,131.275 864.304,133.365 884.473,135.66 903.292,137.992 \n",
       "  904.642,138.161 924.811,140.894 944.98,143.834 959.829,146.15 965.149,146.989 985.318,150.38 1005.49,153.979 1007.23,154.308 1025.66,157.827 1045.83,161.891 \n",
       "  1048.54,162.466 1065.99,166.208 1085.62,170.624 1086.16,170.748 1106.33,175.556 1119.29,178.783 1126.5,180.601 1146.67,185.904 1150.46,186.941 1166.84,191.48 \n",
       "  1179.4,195.099 1187.01,197.318 1206.63,203.257 1207.18,203.425 1227.35,209.834 1232.15,211.415 1247.52,216.533 1256.34,219.574 1267.68,223.532 1279.33,227.732 \n",
       "  1287.85,230.843 1301.25,235.89 1308.02,238.476 1322.18,244.048 1328.19,246.446 1342.21,252.207 1348.36,254.767 1361.43,260.365 1368.53,263.451 1379.88,268.523 \n",
       "  1388.7,272.515 1397.65,276.681 1408.87,281.974 1414.78,284.839 1429.04,291.846 1431.32,292.998 1447.27,301.156 1449.21,302.162 1462.64,309.314 1469.38,312.952 \n",
       "  1477.54,317.472 1489.54,324.219 1492,325.63 1505.95,333.789 1509.71,336.02 1519.47,341.947 1529.88,348.375 1532.62,350.105 1545.34,358.263 1550.05,361.337 \n",
       "  1557.68,366.421 1569.71,374.58 1570.22,374.931 1581.3,382.738 1590.39,389.252 1592.63,390.896 1603.59,399.054 1610.56,404.341 1614.27,407.213 1624.62,415.371 \n",
       "  1630.73,420.277 1634.7,423.529 1644.47,431.687 1650.9,437.156 1653.99,439.845 1663.21,448.004 1671.07,455.092 1672.23,456.162 1680.91,464.32 1689.42,472.478 \n",
       "  1691.23,474.252 1697.63,480.636 1705.63,488.795 1711.4,494.811 1713.42,496.953 1720.93,505.111 1728.27,513.269 1731.57,517.025 1735.37,521.427 1742.24,529.586 \n",
       "  1748.95,537.744 1751.74,541.227 1755.42,545.902 1761.68,554.06 1767.77,562.219 1771.91,567.913 1773.67,570.377 1779.33,578.535 1784.84,586.693 1790.18,594.851 \n",
       "  1792.08,597.842 1795.3,603.01 1800.24,611.168 1805.01,619.326 1809.63,627.484 1812.25,632.272 1814.06,635.642 1818.29,643.801 1822.36,651.959 1826.28,660.117 \n",
       "  1830.04,668.275 1832.42,673.649 1833.63,676.433 1837.02,684.592 1840.26,692.75 1843.35,700.908 1846.29,709.066 1849.07,717.225 1851.7,725.383 1852.59,728.285 \n",
       "  1854.16,733.541 1856.44,741.699 1858.58,749.857 1860.57,758.016 1862.41,766.174 1864.1,774.332 1865.63,782.49 1867.02,790.648 1868.26,798.807 1869.35,806.965 \n",
       "  1870.28,815.123 1871.07,823.281 1871.71,831.439 1872.2,839.598 1872.53,847.756 1872.72,855.914 1872.76,863.444 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9402)\" style=\"stroke:#ba3655; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  1872.76,864.282 1872.65,872.231 1872.38,880.389 1871.97,888.547 1871.41,896.705 1870.7,904.863 1869.83,913.022 1868.82,921.18 1867.66,929.338 1866.35,937.496 \n",
       "  1864.88,945.654 1863.27,953.813 1861.51,961.971 1859.6,970.129 1857.53,978.287 1855.32,986.445 1852.96,994.604 1852.59,995.806 1850.41,1002.76 1847.7,1010.92 \n",
       "  1844.84,1019.08 1841.83,1027.24 1838.66,1035.39 1835.34,1043.55 1832.42,1050.43 1831.86,1051.71 1828.18,1059.87 1824.34,1068.03 1820.34,1076.19 1816.19,1084.34 \n",
       "  1812.25,1091.82 1811.88,1092.5 1807.34,1100.66 1802.65,1108.82 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9402)\" style=\"stroke:#cb4148; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  1860.28,1108.82 1864.75,1100.66 1869.06,1092.5 1872.76,1085.26 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9402)\" style=\"stroke:#cb4148; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  1872.76,638.828 1871.16,635.642 1866.92,627.484 1862.53,619.326 1858,611.168 1853.31,603.01 1852.59,601.793 1848.4,594.851 1843.33,586.693 1838.1,578.535 \n",
       "  1832.73,570.377 1832.42,569.921 1827.11,562.219 1821.33,554.06 1815.39,545.902 1812.25,541.691 1809.25,537.744 1802.9,529.586 1796.38,521.427 1792.08,516.163 \n",
       "  1789.67,513.269 1782.72,505.111 1775.61,496.953 1771.91,492.799 1768.28,488.795 1760.71,480.636 1752.98,472.478 1751.74,471.197 1744.97,464.32 1736.76,456.162 \n",
       "  1731.57,451.106 1728.33,448.004 1719.63,439.845 1711.4,432.278 1710.75,431.687 1701.54,423.529 1692.15,415.371 1691.23,414.586 1682.43,407.213 1672.51,399.054 \n",
       "  1671.07,397.889 1662.24,390.896 1651.76,382.738 1650.9,382.075 1640.91,374.58 1630.73,367.069 1629.83,366.421 1618.36,358.263 1610.56,352.806 1606.62,350.105 \n",
       "  1594.52,341.947 1590.39,339.207 1582.05,333.789 1570.22,326.22 1569.28,325.63 1556.05,317.472 1550.05,313.832 1542.45,309.314 1529.88,301.962 1528.47,301.156 \n",
       "  1514,292.998 1509.71,290.615 1499.07,284.839 1489.54,279.738 1483.69,276.681 1469.38,269.302 1467.83,268.523 1451.38,260.365 1449.21,259.302 1434.33,252.207 \n",
       "  1429.04,249.712 1416.69,244.048 1408.87,240.506 1398.4,235.89 1388.7,231.667 1379.41,227.732 1368.53,223.183 1359.65,219.574 1348.36,215.04 1339.07,211.415 \n",
       "  1328.19,207.225 1317.58,203.257 1308.02,199.726 1295.11,195.099 1287.85,192.532 1271.55,186.941 1267.68,185.631 1247.52,179.016 1246.78,178.783 1227.35,172.692 \n",
       "  1220.51,170.624 1207.18,166.635 1192.73,162.466 1187.01,160.835 1166.84,155.294 1163.11,154.308 1146.67,150.015 1131.27,146.15 1126.5,144.968 1106.33,140.172 \n",
       "  1096.75,137.992 1086.16,135.609 1065.99,131.274 1058.96,129.833 1045.83,127.174 1025.66,123.29 1016.81,121.675 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9402)\" style=\"stroke:#d84c3d; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  1169.91,121.675 1187.01,126.165 1200.47,129.833 1207.18,131.682 1227.35,137.445 1229.2,137.992 1247.52,143.472 1256.17,146.15 1267.68,149.754 1281.77,154.308 \n",
       "  1287.85,156.297 1306.13,162.466 1308.02,163.112 1328.19,170.212 1329.33,170.624 1348.36,177.608 1351.47,178.783 1368.53,185.303 1372.7,186.941 1388.7,193.306 \n",
       "  1393.08,195.099 1408.87,201.63 1412.7,203.257 1429.04,210.287 1431.59,211.415 1449.21,219.29 1449.83,219.574 1467.4,227.732 1469.38,228.662 1484.37,235.89 \n",
       "  1489.54,238.416 1500.81,244.048 1509.71,248.563 1516.74,252.207 1529.88,259.118 1532.2,260.365 1547.16,268.523 1550.05,270.121 1561.66,276.681 1570.22,281.591 \n",
       "  1575.77,284.839 1589.49,292.998 1590.39,293.538 1602.76,301.156 1610.56,306.03 1615.71,309.314 1628.3,317.472 1630.73,319.066 1640.51,325.63 1650.9,332.707 \n",
       "  1652.45,333.789 1664.01,341.947 1671.07,347.007 1675.3,350.105 1686.28,358.263 1691.23,362.005 1696.97,366.421 1707.39,374.58 1711.4,377.773 1717.52,382.738 \n",
       "  1727.41,390.896 1731.57,394.39 1737.03,399.054 1746.4,407.213 1751.74,411.95 1755.53,415.371 1764.41,423.529 1771.91,430.557 1773.1,431.687 1781.49,439.845 \n",
       "  1789.73,448.004 1792.08,450.381 1797.7,456.162 1805.48,464.32 1812.25,471.574 1813.08,472.478 1820.41,480.636 1827.59,488.795 1832.42,494.408 1834.57,496.953 \n",
       "  1841.32,505.111 1847.92,513.269 1852.59,519.179 1854.33,521.427 1860.52,529.586 1866.56,537.744 1872.45,545.902 1872.76,546.34 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9402)\" style=\"stroke:#e55c2f; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  1872.76,475.407 1870.21,472.478 1862.97,464.32 1855.58,456.162 1852.59,452.917 1847.97,448.004 1840.15,439.845 1832.42,431.929 1832.18,431.687 1823.92,423.529 \n",
       "  1815.5,415.371 1812.25,412.279 1806.83,407.213 1797.95,399.054 1792.08,393.754 1788.86,390.896 1779.5,382.738 1771.91,376.237 1769.94,374.58 1760.09,366.421 \n",
       "  1751.74,359.627 1750.04,358.263 1739.66,350.105 1731.57,343.841 1729.08,341.947 1718.18,333.789 1711.4,328.8 1707.02,325.63 1695.56,317.472 1691.23,314.44 \n",
       "  1683.78,309.314 1671.75,301.156 1671.07,300.701 1659.3,292.998 1650.9,287.569 1646.58,284.839 1633.51,276.681 1630.73,274.971 1620.03,268.523 1610.56,262.891 \n",
       "  1606.22,260.365 1592.02,252.207 1590.39,251.284 1577.35,244.048 1570.22,240.147 1562.27,235.89 1550.05,229.428 1546.77,227.732 1530.79,219.574 1529.88,219.117 \n",
       "  1514.25,211.415 1509.71,209.21 1497.19,203.257 1489.54,199.67 1479.57,195.099 1469.38,190.484 1461.35,186.941 1449.21,181.639 1442.49,178.783 1429.04,173.124 \n",
       "  1422.94,170.624 1408.87,164.927 1402.63,162.466 1388.7,157.035 1381.51,154.308 1368.53,149.44 1359.51,146.15 1348.36,142.131 1336.54,137.992 1328.19,135.099 \n",
       "  1312.53,129.833 1308.02,128.333 1287.85,121.828 1287.37,121.675 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9402)\" style=\"stroke:#ef6d21; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  1386.33,121.675 1388.7,122.534 1408.29,129.833 1408.87,130.05 1429.04,137.852 1429.39,137.992 1449.21,145.948 1449.7,146.15 1469.29,154.308 1469.38,154.344 \n",
       "  1488.19,162.466 1489.54,163.058 1506.46,170.624 1509.71,172.098 1524.14,178.783 1529.88,181.475 1541.27,186.941 1550.05,191.203 1557.9,195.099 1570.22,201.294 \n",
       "  1574.04,203.257 1589.72,211.415 1590.39,211.766 1604.9,219.574 1610.56,222.659 1619.67,227.732 1630.73,233.964 1634.07,235.89 1648.07,244.048 1650.9,245.72 \n",
       "  1661.66,252.207 1671.07,257.953 1674.94,260.365 1687.85,268.523 1691.23,270.687 1700.42,276.681 1711.4,283.954 1712.72,284.839 1724.64,292.998 1731.57,297.809 \n",
       "  1736.31,301.156 1747.68,309.314 1751.74,312.274 1758.75,317.472 1769.59,325.63 1771.91,327.405 1780.11,333.789 1790.44,341.947 1792.08,343.265 1800.45,350.105 \n",
       "  1810.28,358.263 1812.25,359.924 1819.82,366.421 1829.17,374.58 1832.42,377.465 1838.26,382.738 1847.14,390.896 1852.59,395.98 1855.82,399.054 1864.26,407.213 \n",
       "  1872.55,415.371 1872.76,415.577 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9402)\" style=\"stroke:#f68211; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  1872.76,362.896 1867.54,358.263 1858.2,350.105 1852.59,345.279 1848.65,341.947 1838.84,333.789 1832.42,328.521 1828.83,325.63 1818.55,317.472 1812.25,312.545 \n",
       "  1808.04,309.314 1797.27,301.156 1792.08,297.283 1786.23,292.998 1774.95,284.839 1771.91,282.676 1763.35,276.681 1751.74,268.671 1751.52,268.523 1739.32,260.365 \n",
       "  1731.57,255.256 1726.86,252.207 1714.09,244.048 1711.4,242.355 1700.95,235.89 1691.23,229.958 1687.52,227.732 1673.72,219.574 1671.07,218.026 1659.52,211.415 \n",
       "  1650.9,206.544 1644.96,203.257 1630.73,195.468 1630.04,195.099 1614.63,186.941 1610.56,184.81 1598.79,178.783 1590.39,174.528 1582.51,170.624 1570.22,164.606 \n",
       "  1565.75,162.466 1550.05,155.03 1548.49,154.308 1530.67,146.15 1529.88,145.793 1512.25,137.992 1509.71,136.883 1493.21,129.833 1489.54,128.282 1473.53,121.675 \n",
       "  \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9402)\" style=\"stroke:#fa9607; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  1552.39,121.675 1570.22,129.745 1570.41,129.833 1587.85,137.992 1590.39,139.191 1604.79,146.15 1610.56,148.97 1621.25,154.308 1630.73,159.093 1637.27,162.466 \n",
       "  1650.9,169.571 1652.88,170.624 1668.03,178.783 1671.07,180.436 1682.77,186.941 1691.23,191.701 1697.16,195.099 1711.22,203.257 1711.4,203.368 1724.84,211.415 \n",
       "  1731.57,215.499 1738.17,219.574 1751.2,227.732 1751.74,228.072 1763.85,235.89 1771.91,241.161 1776.25,244.048 1788.34,252.207 1792.08,254.765 1800.13,260.365 \n",
       "  1811.69,268.523 1812.25,268.923 1822.91,276.681 1832.42,283.698 1833.94,284.839 1844.66,292.998 1852.59,299.123 1855.18,301.156 1865.41,309.314 1872.76,315.252 \n",
       "  \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9402)\" style=\"stroke:#fbac11; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  1872.76,271.443 1868.88,268.523 1857.89,260.365 1852.59,256.481 1846.65,252.207 1835.17,244.048 1832.42,242.116 1823.39,235.89 1812.25,228.308 1811.39,227.732 \n",
       "  1799.03,219.574 1792.08,215.039 1786.42,211.415 1773.53,203.257 1771.91,202.246 1760.27,195.099 1751.74,189.93 1746.72,186.941 1732.85,178.783 1731.57,178.039 \n",
       "  1718.58,170.624 1711.4,166.581 1703.97,162.466 1691.23,155.505 1689,154.308 1673.62,146.15 1671.07,144.813 1657.79,137.992 1650.9,134.486 1641.56,129.833 \n",
       "  1630.73,124.5 1624.87,121.675 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9402)\" style=\"stroke:#f9c32a; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  1692.39,121.675 1708,129.833 1711.4,131.63 1723.22,137.992 1731.57,142.543 1738.07,146.15 1751.74,153.821 1752.59,154.308 1766.7,162.466 1771.91,165.513 \n",
       "  1780.49,170.624 1792.08,177.607 1794,178.783 1807.14,186.941 1812.25,190.151 1819.99,195.099 1832.42,203.142 1832.59,203.257 1844.83,211.415 1852.59,216.647 \n",
       "  1856.85,219.574 1868.59,227.732 1872.76,230.664 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9402)\" style=\"stroke:#f5d949; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  1872.76,192.364 1864.55,186.941 1852.59,179.124 1852.06,178.783 1839.2,170.624 1832.42,166.367 1826.09,162.466 1812.71,154.308 1812.25,154.03 1798.94,146.15 \n",
       "  1792.08,142.13 1784.89,137.992 1771.91,130.61 1770.52,129.833 1755.76,121.675 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9402)\" style=\"stroke:#f2ee74; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  1815.71,121.675 1829.71,129.833 1832.42,131.426 1843.37,137.992 1852.59,143.574 1856.77,146.15 1869.85,154.308 1872.76,156.137 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9402)\" style=\"stroke:#cb4148; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  278.066,121.675 259.233,125.207 239.064,129.191 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9402)\" style=\"stroke:#060419; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  570.191,643.801 561.769,644.887 541.6,648.181 522.492,651.959 521.431,652.177 501.262,657.044 490.169,660.117 481.093,662.735 464.083,668.275 460.924,669.348 \n",
       "  442.206,676.433 440.755,677.008 423.364,684.592 420.585,685.86 406.782,692.75 400.416,696.084 391.927,700.908 380.247,707.891 378.424,709.066 366.428,717.225 \n",
       "  360.078,721.793 355.428,725.383 345.47,733.541 339.909,738.396 336.366,741.699 328.188,749.857 320.585,758.016 319.74,758.995 313.924,766.174 307.854,774.332 \n",
       "  302.323,782.49 299.571,786.988 297.458,790.648 293.257,798.807 289.565,806.965 286.383,815.123 283.709,823.281 281.545,831.439 279.89,839.598 279.402,843.074 \n",
       "  278.78,847.756 278.177,855.914 278.057,864.072 278.418,872.231 279.262,880.389 279.402,881.252 280.654,888.547 282.564,896.705 284.982,904.863 287.91,913.022 \n",
       "  291.347,921.18 295.294,929.338 299.571,937.17 299.76,937.496 305.021,945.654 310.822,953.813 317.162,961.971 319.74,965.028 324.315,970.129 332.205,978.287 \n",
       "  339.909,985.713 340.721,986.445 350.372,994.604 360.078,1002.32 360.677,1002.76 372.344,1010.92 380.247,1016.15 385.016,1019.08 399.016,1027.24 400.416,1028.01 \n",
       "  414.858,1035.39 420.585,1038.19 432.612,1043.55 440.755,1047.03 452.866,1051.71 460.924,1054.7 476.478,1059.87 481.093,1061.34 501.262,1067.04 505.263,1068.03 \n",
       "  521.431,1071.85 541.6,1075.92 543.206,1076.19 561.769,1079.16 581.938,1081.71 602.107,1083.58 614.965,1084.34 622.276,1084.76 642.445,1085.25 662.614,1085.09 \n",
       "  680.917,1084.34 682.783,1084.27 702.952,1082.73 723.121,1080.52 743.29,1077.63 751.441,1076.19 763.459,1073.97 783.628,1069.56 789.64,1068.03 803.797,1064.28 \n",
       "  818.47,1059.87 823.966,1058.15 842.271,1051.71 844.135,1051.03 862.513,1043.55 864.304,1042.79 880.146,1035.39 884.473,1033.28 895.809,1027.24 904.642,1022.29 \n",
       "  909.948,1019.08 922.738,1010.92 924.811,1009.52 934.142,1002.76 944.766,994.604 944.98,994.428 954.114,986.445 962.856,978.287 965.149,975.992 970.645,970.129 \n",
       "  977.737,961.971 984.272,953.813 985.318,952.385 989.965,945.654 995.074,937.496 999.658,929.338 1003.72,921.18 1005.49,917.1 1007.16,913.022 1010.01,904.863 \n",
       "  1012.36,896.705 1014.22,888.547 1015.58,880.389 1016.44,872.231 1016.82,864.072 1016.69,855.914 1016.07,847.756 1014.96,839.598 1013.35,831.439 1011.24,823.281 \n",
       "  1008.64,815.123 1005.55,806.965 1005.49,806.824 1001.75,798.807 997.432,790.648 992.585,782.49 987.214,774.332 985.318,771.708 981.074,766.174 974.26,758.016 \n",
       "  966.891,749.857 965.149,748.065 958.559,741.699 949.521,733.541 944.98,729.695 939.533,725.383 928.592,717.225 924.811,714.56 916.428,709.066 904.642,701.744 \n",
       "  903.187,700.908 888.247,692.75 884.473,690.786 871.51,684.592 864.304,681.303 852.593,676.433 844.135,673.068 830.79,668.275 823.966,665.926 805.05,660.117 \n",
       "  803.797,659.748 783.628,654.52 772.163,651.959 763.459,650.088 743.29,646.447 725.181,643.801 723.121,643.511 702.952,641.339 682.783,639.836 662.614,639.001 \n",
       "  642.445,638.834 622.276,639.335 602.107,640.504 581.938,642.342 570.191,643.801 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9402)\" style=\"stroke:#ff0000; stroke-width:8; stroke-opacity:1; fill:none\" points=\"\n",
       "  953.804,1108.82 953.804,-371.897 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9402)\" style=\"stroke:#000000; stroke-width:8; stroke-opacity:1; fill:none\" points=\"\n",
       "  239.064,417.818 1872.76,417.818 \n",
       "  \"/>\n",
       "<circle clip-path=\"url(#clip9402)\" cx=\"953.804\" cy=\"862.033\" r=\"14\" fill=\"#ff0000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"2.56\"/>\n",
       "<path clip-path=\"url(#clip9400)\" d=\"\n",
       "M1438.61 418.315 L1815.16 418.315 L1815.16 176.395 L1438.61 176.395  Z\n",
       "  \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
       "<polyline clip-path=\"url(#clip9400)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  1438.61,418.315 1815.16,418.315 1815.16,176.395 1438.61,176.395 1438.61,418.315 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9400)\" style=\"stroke:#ff0000; stroke-width:8; stroke-opacity:1; fill:none\" points=\"\n",
       "  1457.81,236.875 1573.01,236.875 \n",
       "  \"/>\n",
       "<g clip-path=\"url(#clip9400)\">\n",
       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:start;\" transform=\"rotate(0, 1592.21, 254.375)\" x=\"1592.21\" y=\"254.375\">2.75 &lt; x</text>\n",
       "</g>\n",
       "<polyline clip-path=\"url(#clip9400)\" style=\"stroke:#000000; stroke-width:8; stroke-opacity:1; fill:none\" points=\"\n",
       "  1457.81,297.355 1573.01,297.355 \n",
       "  \"/>\n",
       "<g clip-path=\"url(#clip9400)\">\n",
       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:start;\" transform=\"rotate(0, 1592.21, 314.855)\" x=\"1592.21\" y=\"314.855\">y &lt; -0.3</text>\n",
       "</g>\n",
       "<circle clip-path=\"url(#clip9400)\" cx=\"1525.01\" cy=\"357.835\" r=\"21\" fill=\"#ff0000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"2.56\"/>\n",
       "<g clip-path=\"url(#clip9400)\">\n",
       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:start;\" transform=\"rotate(0, 1592.21, 375.335)\" x=\"1592.21\" y=\"375.335\">optimum</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip9400)\">\n",
       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 1260.12, 830.176)\" x=\"1260.12\" y=\"830.176\">somewhere here</text>\n",
       "</g>\n",
       "</svg>\n"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "contour( x,y,loss2d',\n",
    "         xlims = (1,5),\n",
    "         ylims = (-1,0),\n",
    "         legend = false,\n",
    "         levels = 21,\n",
    "         title = \"Contour plot of loss function\",\n",
    "         xlabel = \"x\",\n",
    "         ylabel = \"y\",\n",
    "         annotation = (3.5,-0.7,text(\"somewhere here\",8)) )\n",
    "\n",
    "plot!([2.75,2.75],[-1,0.5],linecolor=:red,linewidth=2,label=\"2.75 < x\",legend=true)\n",
    "plot!([1,5],[-0.3,-0.3],linecolor=:black,linewidth=2,label=\"y < -0.3\")\n",
    "scatter!([2.75],[-0.75],markercolor=:red,label=\"optimum\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "minimum at [2.75, -0.7500000009574268] and XTOL_REACHED\n"
     ]
    }
   ],
   "source": [
    "opt = Opt(:LN_COBYLA, 2)               #bounds on the parameters\n",
    "lower_bounds!(opt,[2.75, -Inf])\n",
    "upper_bounds!(opt,[Inf, -0.3])\n",
    "min_objective!(opt,(p,g)->lossfun(p,g,0))\n",
    "xtol_rel!(opt,1e-8)\n",
    "\n",
    "(minf,minx,ret) = optimize(opt,[3.0, -0.5])\n",
    "println(\"minimum at $minx and $ret\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Optimization with Equality Constraints\n",
    "\n",
    "We now impose the constraint that $x+2y-3=0.$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n",
       "<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"480\" height=\"320\" viewBox=\"0 0 1920 1280\">\n",
       "<defs>\n",
       "  <clipPath id=\"clip9800\">\n",
       "    <rect x=\"0\" y=\"0\" width=\"1920\" height=\"1280\"/>\n",
       "  </clipPath>\n",
       "</defs>\n",
       "<path clip-path=\"url(#clip9800)\" d=\"\n",
       "M0 1280 L1920 1280 L1920 0 L0 0  Z\n",
       "  \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
       "<defs>\n",
       "  <clipPath id=\"clip9801\">\n",
       "    <rect x=\"384\" y=\"0\" width=\"1345\" height=\"1280\"/>\n",
       "  </clipPath>\n",
       "</defs>\n",
       "<path clip-path=\"url(#clip9800)\" d=\"\n",
       "M239.064 1108.82 L1872.76 1108.82 L1872.76 121.675 L239.064 121.675  Z\n",
       "  \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
       "<defs>\n",
       "  <clipPath id=\"clip9802\">\n",
       "    <rect x=\"239\" y=\"121\" width=\"1635\" height=\"988\"/>\n",
       "  </clipPath>\n",
       "</defs>\n",
       "<polyline clip-path=\"url(#clip9802)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
       "  239.064,1108.82 239.064,121.675 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9802)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
       "  647.487,1108.82 647.487,121.675 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9802)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
       "  1055.91,1108.82 1055.91,121.675 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9802)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
       "  1464.33,1108.82 1464.33,121.675 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9802)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
       "  1872.76,1108.82 1872.76,121.675 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9802)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
       "  239.064,1108.82 1872.76,1108.82 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9802)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
       "  239.064,911.39 1872.76,911.39 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9802)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
       "  239.064,713.961 1872.76,713.961 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9802)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
       "  239.064,516.533 1872.76,516.533 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9802)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
       "  239.064,319.104 1872.76,319.104 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9802)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
       "  239.064,121.675 1872.76,121.675 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9800)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  239.064,1108.82 1872.76,1108.82 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9800)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  239.064,1108.82 239.064,121.675 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9800)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  239.064,1108.82 239.064,1096.97 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9800)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  647.487,1108.82 647.487,1096.97 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9800)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  1055.91,1108.82 1055.91,1096.97 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9800)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  1464.33,1108.82 1464.33,1096.97 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9800)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  1872.76,1108.82 1872.76,1096.97 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9800)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  239.064,1108.82 258.668,1108.82 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9800)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  239.064,911.39 258.668,911.39 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9800)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  239.064,713.961 258.668,713.961 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9800)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  239.064,516.533 258.668,516.533 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9800)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  239.064,319.104 258.668,319.104 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9800)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  239.064,121.675 258.668,121.675 \n",
       "  \"/>\n",
       "<g clip-path=\"url(#clip9800)\">\n",
       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 239.064, 1160.42)\" x=\"239.064\" y=\"1160.42\">1</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip9800)\">\n",
       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 647.487, 1160.42)\" x=\"647.487\" y=\"1160.42\">2</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip9800)\">\n",
       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 1055.91, 1160.42)\" x=\"1055.91\" y=\"1160.42\">3</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip9800)\">\n",
       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 1464.33, 1160.42)\" x=\"1464.33\" y=\"1160.42\">4</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip9800)\">\n",
       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 1872.76, 1160.42)\" x=\"1872.76\" y=\"1160.42\">5</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip9800)\">\n",
       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 219.864, 1126.32)\" x=\"219.864\" y=\"1126.32\">-1.0</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip9800)\">\n",
       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 219.864, 928.89)\" x=\"219.864\" y=\"928.89\">-0.8</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip9800)\">\n",
       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 219.864, 731.461)\" x=\"219.864\" y=\"731.461\">-0.6</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip9800)\">\n",
       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 219.864, 534.033)\" x=\"219.864\" y=\"534.033\">-0.4</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip9800)\">\n",
       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 219.864, 336.604)\" x=\"219.864\" y=\"336.604\">-0.2</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip9800)\">\n",
       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 219.864, 139.175)\" x=\"219.864\" y=\"139.175\">0.0</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip9800)\">\n",
       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1055.91, 73.2)\" x=\"1055.91\" y=\"73.2\">Contour plot of loss function</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip9800)\">\n",
       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:66px; text-anchor:middle;\" transform=\"rotate(0, 1055.91, 1237.88)\" x=\"1055.91\" y=\"1237.88\">x</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip9800)\">\n",
       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:66px; text-anchor:middle;\" transform=\"rotate(-90, 94.0861, 615.247)\" x=\"94.0861\" y=\"615.247\">y</text>\n",
       "</g>\n",
       "<polyline clip-path=\"url(#clip9802)\" style=\"stroke:#130a34; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  321.681,1108.82 319.74,1107.89 305.512,1100.66 299.571,1097.54 290.538,1092.5 279.402,1086.07 276.568,1084.34 263.673,1076.19 259.233,1073.27 251.664,1068.03 \n",
       "  240.338,1059.87 239.064,1058.91 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9802)\" style=\"stroke:#130a34; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  973.198,1108.82 985.318,1102.84 989.488,1100.66 1004.55,1092.5 1005.49,1091.98 1018.35,1084.34 1025.66,1079.84 1031.29,1076.19 1043.38,1068.03 1045.83,1066.31 \n",
       "  1054.54,1059.87 1065.14,1051.71 1065.99,1051.03 1074.86,1043.55 1084.11,1035.39 1086.16,1033.5 1092.63,1027.24 1100.65,1019.08 1106.33,1013 1108.19,1010.92 \n",
       "  1115.09,1002.76 1121.6,994.604 1126.5,988.072 1127.67,986.445 1133.17,978.287 1138.29,970.129 1143.05,961.971 1146.67,955.219 1147.4,953.813 1151.24,945.654 \n",
       "  1154.73,937.496 1157.87,929.338 1160.64,921.18 1163.06,913.022 1165.11,904.863 1166.81,896.705 1166.84,896.552 1168.11,888.547 1169.05,880.389 1169.66,872.231 \n",
       "  1169.91,864.072 1169.83,855.914 1169.4,847.756 1168.62,839.598 1167.5,831.439 1166.84,827.735 1166.01,823.281 1164.13,815.123 1161.89,806.965 1159.3,798.807 \n",
       "  1156.34,790.648 1153.03,782.49 1149.36,774.332 1146.67,768.875 1145.28,766.174 1140.72,758.016 1135.78,749.857 1130.47,741.699 1126.5,736.007 1124.71,733.541 \n",
       "  1118.39,725.383 1111.69,717.225 1106.33,711.068 1104.51,709.066 1096.69,700.908 1088.47,692.75 1086.16,690.572 1079.54,684.592 1070.08,676.433 1065.99,673.067 \n",
       "  1059.9,668.275 1049.08,660.117 1045.83,657.764 1037.39,651.959 1025.66,644.193 1025.03,643.801 1011.54,635.642 1005.49,632.115 997.085,627.484 985.318,621.22 \n",
       "  981.541,619.326 965.149,611.378 964.687,611.168 946.166,603.01 944.98,602.503 925.794,594.851 924.811,594.471 904.642,587.216 903.069,586.693 884.473,580.69 \n",
       "  877.205,578.535 864.304,574.818 847.381,570.377 844.135,569.548 823.966,564.903 810.899,562.219 803.797,560.799 783.628,557.255 763.459,554.201 762.354,554.06 \n",
       "  743.29,551.698 723.121,549.676 702.952,548.129 682.783,547.058 662.614,546.463 642.445,546.344 622.276,546.701 602.107,547.534 581.938,548.843 561.769,550.628 \n",
       "  541.6,552.888 532.962,554.06 521.431,555.667 501.262,558.966 483.942,562.219 481.093,562.768 460.924,567.163 447.685,570.377 440.755,572.107 420.585,577.659 \n",
       "  417.674,578.535 400.416,583.879 392.041,586.693 380.247,590.775 369.328,594.851 360.078,598.411 348.939,603.01 339.909,606.857 330.433,611.168 319.74,616.193 \n",
       "  313.471,619.326 299.571,626.511 297.794,627.484 283.409,635.642 279.402,637.998 270.06,643.801 259.233,650.781 257.499,651.959 245.944,660.117 239.064,665.175 \n",
       "  \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9802)\" style=\"stroke:#240b4e; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  239.064,564.4 243.5,562.219 259.233,554.689 260.617,554.06 279.055,545.902 279.402,545.753 299.022,537.744 299.571,537.525 319.74,529.949 320.769,529.586 \n",
       "  339.909,522.989 344.748,521.427 360.078,516.597 371.405,513.269 380.247,510.732 400.416,505.365 401.452,505.111 420.585,500.525 436.876,496.953 440.755,496.121 \n",
       "  460.924,492.199 480.425,488.795 481.093,488.681 501.262,485.63 521.431,482.973 541.6,480.71 542.391,480.636 561.769,478.878 581.938,477.433 602.107,476.374 \n",
       "  622.276,475.699 642.445,475.41 662.614,475.507 682.783,475.988 702.952,476.855 723.121,478.107 743.29,479.745 752.178,480.636 763.459,481.792 783.628,484.252 \n",
       "  803.797,487.106 814.284,488.795 823.966,490.388 844.135,494.11 858.041,496.953 864.304,498.262 884.473,502.891 893.358,505.111 904.642,507.996 923.712,513.269 \n",
       "  924.811,513.58 944.98,519.721 950.219,521.427 965.149,526.41 974.081,529.586 985.318,533.681 995.822,537.744 1005.49,541.578 1015.79,545.902 1025.66,550.151 \n",
       "  1034.26,554.06 1045.83,559.454 1051.46,562.219 1065.99,569.548 1067.56,570.377 1082.55,578.535 1086.16,580.556 1096.63,586.693 1106.33,592.554 1109.97,594.851 \n",
       "  1122.51,603.01 1126.5,605.691 1134.32,611.168 1145.6,619.326 1146.67,620.131 1156.11,627.484 1166.22,635.642 1166.84,636.161 1175.63,643.801 1184.66,651.959 \n",
       "  1187.01,654.159 1193.13,660.117 1201.17,668.275 1207.18,674.633 1208.82,676.433 1215.94,684.592 1222.74,692.75 1227.35,698.554 1229.15,700.908 1235.1,709.066 \n",
       "  1240.74,717.225 1246.07,725.383 1247.52,727.732 1250.97,733.541 1255.53,741.699 1259.79,749.857 1263.75,758.016 1267.41,766.174 1267.68,766.851 1270.67,774.332 \n",
       "  1273.63,782.49 1276.31,790.648 1278.69,798.807 1280.79,806.965 1282.6,815.123 1284.12,823.281 1285.35,831.439 1286.29,839.598 1286.94,847.756 1287.3,855.914 \n",
       "  1287.37,864.072 1287.15,872.231 1286.65,880.389 1285.85,888.547 1284.77,896.705 1283.39,904.863 1281.73,913.022 1279.78,921.18 1277.54,929.338 1275.01,937.496 \n",
       "  1272.19,945.654 1269.08,953.813 1267.68,957.157 1265.61,961.971 1261.8,970.129 1257.7,978.287 1253.29,986.445 1248.58,994.604 1247.52,996.342 1243.44,1002.76 \n",
       "  1237.96,1010.92 1232.16,1019.08 1227.35,1025.52 1226.02,1027.24 1219.38,1035.39 1212.42,1043.55 1207.18,1049.43 1205.07,1051.71 1197.19,1059.87 1188.98,1068.03 \n",
       "  1187.01,1069.91 1180.19,1076.19 1170.98,1084.34 1166.84,1087.88 1161.21,1092.5 1150.92,1100.66 1146.67,1103.91 1140,1108.82 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9802)\" style=\"stroke:#390962; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  1263.17,1108.82 1267.68,1104.68 1271.92,1100.66 1280.24,1092.5 1287.85,1084.76 1288.25,1084.34 1295.75,1076.19 1302.97,1068.03 1308.02,1062.08 1309.85,1059.87 \n",
       "  1316.3,1051.71 1322.49,1043.55 1328.19,1035.68 1328.39,1035.39 1333.87,1027.24 1339.08,1019.08 1344.03,1010.92 1348.36,1003.37 1348.7,1002.76 1353,994.604 \n",
       "  1357.03,986.445 1360.82,978.287 1364.34,970.129 1367.61,961.971 1368.53,959.482 1370.57,953.813 1373.25,945.654 1375.68,937.496 1377.86,929.338 1379.79,921.18 \n",
       "  1381.47,913.022 1382.91,904.863 1384.09,896.705 1385.03,888.547 1385.71,880.389 1386.15,872.231 1386.34,864.072 1386.27,855.914 1385.96,847.756 1385.4,839.598 \n",
       "  1384.59,831.439 1383.53,823.281 1382.22,815.123 1380.66,806.965 1378.86,798.807 1376.8,790.648 1374.49,782.49 1371.94,774.332 1369.13,766.174 1368.53,764.565 \n",
       "  1366.01,758.016 1362.61,749.857 1358.96,741.699 1355.05,733.541 1350.88,725.383 1348.36,720.735 1346.4,717.225 1341.59,709.066 1336.51,700.908 1331.16,692.75 \n",
       "  1328.19,688.428 1325.48,684.592 1319.43,676.433 1313.11,668.275 1308.02,661.983 1306.47,660.117 1299.39,651.959 1292.04,643.801 1287.85,639.334 1284.29,635.642 \n",
       "  1276.12,627.484 1267.68,619.352 1267.66,619.326 1258.62,611.168 1249.28,603.01 1247.52,601.515 1239.38,594.851 1229.1,586.693 1227.35,585.34 1218.21,578.535 \n",
       "  1207.18,570.557 1206.92,570.377 1194.9,562.219 1187.01,557.01 1182.37,554.06 1169.2,545.902 1166.84,544.477 1155.24,537.744 1146.67,532.889 1140.6,529.586 \n",
       "  1126.5,522.106 1125.17,521.427 1108.74,513.269 1106.33,512.1 1091.28,505.111 1086.16,502.788 1072.7,496.953 1065.99,494.109 1052.84,488.795 1045.83,486.023 \n",
       "  1031.49,480.636 1025.66,478.492 1008.41,472.478 1005.49,471.482 985.318,464.973 983.169,464.32 965.149,458.953 955.162,456.162 944.98,453.373 924.811,448.21 \n",
       "  923.944,448.004 904.642,443.499 887.706,439.845 884.473,439.161 864.304,435.241 844.232,431.687 844.135,431.67 823.966,428.508 803.797,425.687 786.233,423.529 \n",
       "  783.628,423.215 763.459,421.117 743.29,419.356 723.121,417.929 702.952,416.839 682.783,416.084 662.614,415.664 642.445,415.58 622.276,415.832 602.107,416.419 \n",
       "  581.938,417.342 561.769,418.6 541.6,420.194 521.431,422.124 508.922,423.529 501.262,424.405 481.093,427.055 460.924,430.046 450.996,431.687 440.755,433.412 \n",
       "  420.585,437.158 407.345,439.845 400.416,441.279 380.247,445.808 371.182,448.004 360.078,450.746 339.909,456.09 339.655,456.162 319.74,461.91 311.891,464.32 \n",
       "  299.571,468.18 286.628,472.478 279.402,474.928 263.467,480.636 259.233,482.186 242.087,488.795 239.064,489.985 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9802)\" style=\"stroke:#4c0c6a; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  239.064,428.166 252.915,423.529 259.233,421.453 278.728,415.371 279.402,415.164 299.571,409.316 307.257,407.213 319.74,403.857 338.743,399.054 339.909,398.765 \n",
       "  360.078,394.074 374.739,390.896 380.247,389.722 400.416,385.738 416.892,382.738 420.585,382.077 440.755,378.774 460.924,375.778 469.912,374.58 481.093,373.114 \n",
       "  501.262,370.772 521.431,368.733 541.6,366.995 549.663,366.421 561.769,365.574 581.938,364.459 602.107,363.642 622.276,363.122 642.445,362.899 662.614,362.973 \n",
       "  682.783,363.345 702.952,364.014 723.121,364.98 743.29,366.243 745.599,366.421 763.459,367.826 783.628,369.715 803.797,371.905 823.966,374.398 825.276,374.58 \n",
       "  844.135,377.237 864.304,380.387 878.023,382.738 884.473,383.862 904.642,387.691 920.253,390.896 924.811,391.848 944.98,396.38 956.104,399.054 965.149,401.268 \n",
       "  985.318,406.527 987.794,407.213 1005.49,412.199 1016.13,415.371 1025.66,418.265 1042.09,423.529 1045.83,424.747 1065.99,431.67 1066.04,431.687 1086.16,439.074 \n",
       "  1088.17,439.845 1106.33,446.962 1108.88,448.004 1126.5,455.365 1128.33,456.162 1146.67,464.313 1146.69,464.32 1163.96,472.478 1166.84,473.869 1180.34,480.636 \n",
       "  1187.01,484.055 1195.92,488.795 1207.18,494.914 1210.8,496.953 1224.95,505.111 1227.35,506.522 1238.4,513.269 1247.52,518.966 1251.32,521.427 1263.65,529.586 \n",
       "  1267.68,532.323 1275.42,537.744 1286.77,545.902 1287.85,546.7 1297.53,554.06 1307.97,562.219 1308.02,562.265 1317.82,570.377 1327.4,578.535 1328.19,579.227 \n",
       "  1336.46,586.693 1345.24,594.851 1348.36,597.845 1353.6,603.01 1361.61,611.168 1368.53,618.448 1369.34,619.326 1376.63,627.484 1383.68,635.642 1388.7,641.671 \n",
       "  1390.42,643.801 1396.79,651.959 1402.92,660.117 1408.8,668.275 1408.87,668.367 1414.3,676.433 1419.56,684.592 1424.58,692.75 1429.04,700.351 1429.36,700.908 \n",
       "  1433.79,709.066 1437.99,717.225 1441.96,725.383 1445.7,733.541 1449.21,741.675 1449.22,741.699 1452.42,749.857 1455.39,758.016 1458.14,766.174 1460.67,774.332 \n",
       "  1462.97,782.49 1465.05,790.648 1466.9,798.807 1468.53,806.965 1469.38,811.89 1469.92,815.123 1471.07,823.281 1472,831.439 1472.71,839.598 1473.2,847.756 \n",
       "  1473.48,855.914 1473.53,864.072 1473.37,872.231 1472.99,880.389 1472.38,888.547 1471.56,896.705 1470.52,904.863 1469.38,912.279 1469.26,913.022 1467.74,921.18 \n",
       "  1466,929.338 1464.04,937.496 1461.85,945.654 1459.43,953.813 1456.8,961.971 1453.93,970.129 1450.84,978.287 1449.21,982.322 1447.49,986.445 1443.86,994.604 \n",
       "  1440.01,1002.76 1435.92,1010.92 1431.6,1019.08 1429.04,1023.68 1427,1027.24 1422.1,1035.39 1416.96,1043.55 1411.58,1051.71 1408.87,1055.66 1405.89,1059.87 \n",
       "  1399.89,1068.03 1393.64,1076.19 1388.7,1082.4 1387.11,1084.34 1380.19,1092.5 1373.02,1100.66 1368.53,1105.6 1365.52,1108.82 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9802)\" style=\"stroke:#5e126e; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  1454.96,1108.82 1461.64,1100.66 1468.1,1092.5 1469.38,1090.83 1474.21,1084.34 1480.07,1076.19 1485.71,1068.03 1489.54,1062.26 1491.1,1059.87 1496.18,1051.71 \n",
       "  1501.05,1043.55 1505.7,1035.39 1509.71,1028.02 1510.13,1027.24 1514.26,1019.08 1518.17,1010.92 1521.88,1002.76 1525.38,994.604 1528.67,986.445 1529.88,983.249 \n",
       "  1531.71,978.287 1534.52,970.129 1537.13,961.971 1539.53,953.813 1541.72,945.654 1543.71,937.496 1545.5,929.338 1547.08,921.18 1548.46,913.022 1549.64,904.863 \n",
       "  1550.05,901.387 1550.6,896.705 1551.34,888.547 1551.89,880.389 1552.24,872.231 1552.39,864.072 1552.34,855.914 1552.09,847.756 1551.64,839.598 1551,831.439 \n",
       "  1550.15,823.281 1550.05,822.542 1549.08,815.123 1547.8,806.965 1546.32,798.807 1544.63,790.648 1542.74,782.49 1540.65,774.332 1538.35,766.174 1535.85,758.016 \n",
       "  1533.14,749.857 1530.23,741.699 1529.88,740.779 1527.06,733.541 1523.66,725.383 1520.05,717.225 1516.24,709.066 1512.22,700.908 1509.71,696.08 1507.94,692.75 \n",
       "  1503.4,684.592 1498.64,676.433 1493.67,668.275 1489.54,661.794 1488.45,660.117 1482.92,651.959 1477.17,643.801 1471.2,635.642 1469.38,633.241 1464.9,627.484 \n",
       "  1458.33,619.326 1451.54,611.168 1449.21,608.457 1444.4,603.01 1436.98,594.851 1429.32,586.693 1429.04,586.402 1421.23,578.535 1412.9,570.377 1408.87,566.533 \n",
       "  1404.22,562.219 1395.18,554.06 1388.7,548.365 1385.82,545.902 1376.03,537.744 1368.53,531.644 1365.93,529.586 1355.35,521.427 1348.36,516.165 1344.4,513.269 \n",
       "  1332.99,505.111 1328.19,501.758 1321.11,496.953 1308.81,488.795 1308.02,488.286 1295.87,480.636 1287.85,475.698 1282.46,472.478 1268.5,464.32 1267.68,463.851 \n",
       "  1253.82,456.162 1247.52,452.738 1238.5,448.004 1227.35,442.255 1222.5,439.845 1207.18,432.366 1205.73,431.687 1188.07,423.529 1187.01,423.046 1169.43,415.371 \n",
       "  1166.84,414.258 1149.76,407.213 1146.67,405.961 1128.92,399.054 1126.5,398.129 1106.77,390.896 1106.33,390.738 1086.16,383.784 1082.99,382.738 1065.99,377.237 \n",
       "  1057.38,374.58 1045.83,371.074 1029.69,366.421 1025.66,365.277 1005.49,359.852 999.237,358.263 985.318,354.782 965.47,350.105 965.149,350.031 944.98,345.641 \n",
       "  926.813,341.947 924.811,341.546 904.642,337.792 884.473,334.321 881.107,333.789 864.304,331.174 844.135,328.314 823.966,325.733 823.067,325.63 803.797,323.464 \n",
       "  783.628,321.472 763.459,319.755 743.29,318.312 728.787,317.472 723.121,317.149 702.952,316.269 682.783,315.66 662.614,315.322 642.445,315.254 622.276,315.457 \n",
       "  602.107,315.931 581.938,316.675 566.104,317.472 561.769,317.694 541.6,318.999 521.431,320.579 501.262,322.434 481.093,324.564 472.144,325.63 460.924,326.989 \n",
       "  440.755,329.709 420.585,332.708 413.938,333.789 400.416,336.021 380.247,339.633 368.271,341.947 360.078,343.555 339.909,347.8 329.654,350.105 319.74,352.369 \n",
       "  299.571,357.268 295.703,358.263 279.402,362.527 265.309,366.421 259.233,368.128 239.064,374.096 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9802)\" style=\"stroke:#71196d; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  239.064,325.456 259.233,320.029 269.243,317.472 279.402,314.915 299.571,310.11 303.113,309.314 319.74,305.631 339.909,301.43 341.313,301.156 360.078,297.548 \n",
       "  380.247,293.933 385.877,292.998 400.416,290.616 420.585,287.571 440.36,284.839 440.755,284.786 460.924,282.294 481.093,280.059 501.262,278.078 517.602,276.681 \n",
       "  521.431,276.358 541.6,274.909 561.769,273.713 581.938,272.768 602.107,272.075 622.276,271.634 642.445,271.445 662.614,271.508 682.783,271.823 702.952,272.39 \n",
       "  723.121,273.209 743.29,274.279 763.459,275.602 777.275,276.681 783.628,277.184 803.797,279.037 823.966,281.145 844.135,283.508 854.388,284.839 864.304,286.145 \n",
       "  884.473,289.061 904.642,292.235 909.119,292.998 924.811,295.708 944.98,299.454 953.542,301.156 965.149,303.497 985.318,307.831 991.817,309.314 1005.49,312.479 \n",
       "  1025.66,317.419 1025.86,317.472 1045.83,322.708 1056.42,325.63 1065.99,328.314 1084.62,333.789 1086.16,334.25 1106.33,340.554 1110.6,341.947 1126.5,347.224 \n",
       "  1134.83,350.105 1146.67,354.27 1157.58,358.263 1166.84,361.71 1179.02,366.421 1187.01,369.563 1199.3,374.58 1207.18,377.851 1218.53,382.738 1227.35,386.597 \n",
       "  1236.83,390.896 1247.52,395.823 1254.29,399.054 1267.68,405.556 1270.99,407.213 1286.97,415.371 1287.85,415.831 1302.2,423.529 1308.02,426.712 1316.85,431.687 \n",
       "  1328.19,438.202 1330.97,439.845 1344.49,448.004 1348.36,450.383 1357.49,456.162 1368.53,463.296 1370.07,464.32 1382.1,472.478 1388.7,477.047 1393.74,480.636 \n",
       "  1404.97,488.795 1408.87,491.694 1415.76,496.953 1426.22,505.111 1429.04,507.363 1436.25,513.269 1445.98,521.427 1449.21,524.202 1455.32,529.586 1464.36,537.744 \n",
       "  1469.38,542.388 1473.08,545.902 1481.46,554.06 1489.54,562.141 1489.62,562.219 1497.37,570.377 1504.92,578.535 1509.71,583.877 1512.18,586.693 1519.13,594.851 \n",
       "  1525.87,603.01 1529.88,608.019 1532.35,611.168 1538.52,619.326 1544.5,627.484 1550.05,635.335 1550.26,635.642 1555.71,643.801 1560.95,651.959 1565.99,660.117 \n",
       "  1570.22,667.236 1570.82,668.275 1575.37,676.433 1579.72,684.592 1583.87,692.75 1587.83,700.908 1590.39,706.468 1591.56,709.066 1595.05,717.225 1598.35,725.383 \n",
       "  1601.46,733.541 1604.38,741.699 1607.1,749.857 1609.64,758.016 1610.56,761.218 1611.95,766.174 1614.06,774.332 1615.98,782.49 1617.71,790.648 1619.26,798.807 \n",
       "  1620.62,806.965 1621.79,815.123 1622.77,823.281 1623.57,831.439 1624.18,839.598 1624.6,847.756 1624.83,855.914 1624.88,864.072 1624.74,872.231 1624.41,880.389 \n",
       "  1623.89,888.547 1623.19,896.705 1622.3,904.863 1621.22,913.022 1619.96,921.18 1618.51,929.338 1616.87,937.496 1615.04,945.654 1613.03,953.813 1610.83,961.971 \n",
       "  1610.56,962.893 1608.4,970.129 1605.77,978.287 1602.94,986.445 1599.93,994.604 1596.73,1002.76 1593.33,1010.92 1590.39,1017.61 1589.73,1019.08 1585.87,1027.24 \n",
       "  1581.82,1035.39 1577.57,1043.55 1573.12,1051.71 1570.22,1056.81 1568.44,1059.87 1563.5,1068.03 1558.35,1076.19 1553.01,1084.34 1550.05,1088.7 1547.41,1092.5 \n",
       "  1541.54,1100.66 1535.46,1108.82 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9802)\" style=\"stroke:#83206b; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  1609.27,1108.82 1610.56,1106.98 1614.87,1100.66 1620.26,1092.5 1625.46,1084.34 1630.47,1076.19 1630.73,1075.75 1635.2,1068.03 1639.74,1059.87 1644.1,1051.71 \n",
       "  1648.27,1043.55 1650.9,1038.19 1652.24,1035.39 1655.97,1027.24 1659.52,1019.08 1662.89,1010.92 1666.09,1002.76 1669.1,994.604 1671.07,988.944 1671.92,986.445 \n",
       "  1674.52,978.287 1676.94,970.129 1679.19,961.971 1681.26,953.813 1683.16,945.654 1684.88,937.496 1686.42,929.338 1687.79,921.18 1688.98,913.022 1689.99,904.863 \n",
       "  1690.83,896.705 1691.23,891.72 1691.49,888.547 1691.96,880.389 1692.27,872.231 1692.4,864.072 1692.35,855.914 1692.14,847.756 1691.75,839.598 1691.23,832.171 \n",
       "  1691.18,831.439 1690.43,823.281 1689.51,815.123 1688.41,806.965 1687.13,798.807 1685.67,790.648 1684.04,782.49 1682.23,774.332 1680.25,766.174 1678.09,758.016 \n",
       "  1675.75,749.857 1673.24,741.699 1671.07,735.106 1670.54,733.541 1667.62,725.383 1664.51,717.225 1661.23,709.066 1657.77,700.908 1654.13,692.75 1650.9,685.856 \n",
       "  1650.29,684.592 1646.21,676.433 1641.94,668.275 1637.49,660.117 1632.86,651.959 1630.73,648.351 1627.99,643.801 1622.88,635.642 1617.59,627.484 1612.11,619.326 \n",
       "  1610.56,617.093 1606.36,611.168 1600.38,603.01 1594.21,594.851 1590.39,589.951 1587.79,586.693 1581.1,578.535 1574.21,570.377 1570.22,565.779 1567.06,562.219 \n",
       "  1559.62,554.06 1551.98,545.902 1550.05,543.895 1544.01,537.744 1535.79,529.586 1529.88,523.87 1527.3,521.427 1518.47,513.269 1509.71,505.363 1509.43,505.111 \n",
       "  1499.96,496.953 1490.28,488.795 1489.54,488.187 1480.17,480.636 1469.81,472.478 1469.38,472.141 1458.99,464.32 1449.21,457.104 1447.9,456.162 1436.33,448.004 \n",
       "  1429.04,442.965 1424.41,439.845 1412.06,431.687 1408.87,429.618 1399.22,423.529 1388.7,417.005 1385.99,415.371 1372.21,407.213 1368.53,405.07 1357.89,399.054 \n",
       "  1348.36,393.756 1343.07,390.896 1328.19,383.002 1327.68,382.738 1311.57,374.58 1308.02,372.811 1294.8,366.421 1287.85,363.121 1277.31,358.263 1267.68,353.904 \n",
       "  1259.02,350.105 1247.52,345.137 1239.87,341.947 1227.35,336.799 1219.76,333.789 1207.18,328.871 1198.58,325.63 1187.01,321.334 1176.21,317.472 1166.84,314.171 \n",
       "  1152.51,309.314 1146.67,307.364 1127.31,301.156 1126.5,300.9 1106.33,294.787 1100.16,292.998 1086.16,288.996 1070.94,284.839 1065.99,283.508 1045.83,278.334 \n",
       "  1039.05,276.681 1025.66,273.46 1005.49,268.862 1003.92,268.523 985.318,264.57 965.149,260.531 964.263,260.365 944.98,256.79 924.811,253.296 918.048,252.207 \n",
       "  904.642,250.076 884.473,247.112 864.304,244.391 861.52,244.048 844.135,241.939 823.966,239.73 803.797,237.761 783.628,236.03 781.743,235.89 763.459,234.555 \n",
       "  743.29,233.318 723.121,232.316 702.952,231.55 682.783,231.02 662.614,230.725 642.445,230.666 622.276,230.843 602.107,231.256 581.938,231.904 561.769,232.787 \n",
       "  541.6,233.907 521.431,235.262 513.465,235.89 501.262,236.865 481.093,238.716 460.924,240.805 440.755,243.133 433.559,244.048 420.585,245.721 400.416,248.564 \n",
       "  380.247,251.648 376.864,252.207 360.078,255.012 339.909,258.629 330.843,260.365 319.74,262.52 299.571,266.682 291.157,268.523 279.402,271.13 259.233,275.854 \n",
       "  255.881,276.681 239.064,280.889 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9802)\" style=\"stroke:#972765; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  239.064,239.491 254.468,235.89 259.233,234.79 279.402,230.372 292.13,227.732 299.571,226.208 319.74,222.311 334.809,219.574 339.909,218.659 360.078,215.27 \n",
       "  380.247,212.112 385.042,211.415 400.416,209.211 420.585,206.545 440.755,204.106 448.497,203.257 460.924,201.911 481.093,199.951 501.262,198.214 521.431,196.702 \n",
       "  541.6,195.413 547.557,195.099 561.769,194.358 581.938,193.528 602.107,192.92 622.276,192.532 642.445,192.366 662.614,192.421 682.783,192.698 702.952,193.196 \n",
       "  723.121,193.916 743.29,194.856 747.504,195.099 763.459,196.03 783.628,197.43 803.797,199.054 823.966,200.903 844.135,202.976 846.609,203.257 864.304,205.297 \n",
       "  884.473,207.849 904.642,210.628 909.923,211.415 924.811,213.662 944.98,216.936 960.167,219.574 965.149,220.45 985.318,224.231 1002.91,227.732 1005.49,228.251 \n",
       "  1025.66,232.552 1040.5,235.89 1045.83,237.104 1065.99,241.939 1074.38,244.048 1086.16,247.052 1105.48,252.207 1106.33,252.438 1126.5,258.138 1134.05,260.365 \n",
       "  1146.67,264.135 1160.77,268.523 1166.84,270.436 1185.88,276.681 1187.01,277.056 1207.18,284.019 1209.47,284.839 1227.35,291.328 1231.79,292.998 1247.52,298.993 \n",
       "  1253,301.156 1267.68,307.031 1273.21,309.314 1287.85,315.456 1292.51,317.472 1308.02,324.288 1310.99,325.63 1328.19,333.545 1328.71,333.789 1345.66,341.947 \n",
       "  1348.36,343.266 1361.96,350.105 1368.53,353.465 1377.66,358.263 1388.7,364.161 1392.82,366.421 1407.44,374.58 1408.87,375.393 1421.47,382.738 1429.04,387.221 \n",
       "  1435.08,390.896 1448.26,399.054 1449.21,399.649 1460.92,407.213 1469.38,412.774 1473.23,415.371 1485.11,423.529 1489.54,426.626 1496.61,431.687 1507.79,439.845 \n",
       "  1509.71,441.278 1518.54,448.004 1529.04,456.162 1529.88,456.826 1539.12,464.32 1548.98,472.478 1550.05,473.386 1558.44,480.636 1567.68,488.795 1570.22,491.09 \n",
       "  1576.57,496.953 1585.22,505.111 1590.39,510.098 1593.6,513.269 1601.69,521.427 1609.58,529.586 1610.56,530.625 1617.14,537.744 1624.49,545.902 1630.73,553.005 \n",
       "  1631.64,554.06 1638.47,562.219 1645.12,570.377 1650.9,577.656 1651.58,578.535 1657.74,586.693 1663.72,594.851 1669.52,603.01 1671.07,605.251 1675.06,611.168 \n",
       "  1680.4,619.326 1685.56,627.484 1690.54,635.642 1691.23,636.826 1695.26,643.801 1699.81,651.959 1704.17,660.117 1708.37,668.275 1711.4,674.433 1712.37,676.433 \n",
       "  1716.15,684.592 1719.75,692.75 1723.19,700.908 1726.46,709.066 1729.56,717.225 1731.57,722.842 1732.47,725.383 1735.18,733.541 1737.72,741.699 1740.09,749.857 \n",
       "  1742.3,758.016 1744.34,766.174 1746.21,774.332 1747.92,782.49 1749.46,790.648 1750.84,798.807 1751.74,804.925 1752.04,806.965 1753.06,815.123 1753.92,823.281 \n",
       "  1754.61,831.439 1755.15,839.598 1755.51,847.756 1755.72,855.914 1755.76,864.072 1755.64,872.231 1755.35,880.389 1754.9,888.547 1754.29,896.705 1753.51,904.863 \n",
       "  1752.57,913.022 1751.74,919.14 1751.46,921.18 1750.17,929.338 1748.71,937.496 1747.09,945.654 1745.3,953.813 1743.34,961.971 1741.21,970.129 1738.92,978.287 \n",
       "  1736.47,986.445 1733.84,994.604 1731.57,1001.24 1731.04,1002.76 1728.03,1010.92 1724.85,1019.08 1721.49,1027.24 1717.97,1035.39 1714.28,1043.55 1711.4,1049.63 \n",
       "  1710.4,1051.71 1706.29,1059.87 1702.01,1068.03 1697.56,1076.19 1692.93,1084.34 1691.23,1087.22 1688.07,1092.5 1683,1100.66 1677.75,1108.82 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9802)\" style=\"stroke:#a72d5f; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  1741.98,1108.82 1746.94,1100.66 1751.73,1092.5 1751.74,1092.47 1756.27,1084.34 1760.64,1076.19 1764.85,1068.03 1768.9,1059.87 1771.91,1053.55 1772.77,1051.71 \n",
       "  1776.43,1043.55 1779.92,1035.39 1783.26,1027.24 1786.43,1019.08 1789.44,1010.92 1792.08,1003.38 1792.29,1002.76 1794.94,994.604 1797.42,986.445 1799.75,978.287 \n",
       "  1801.92,970.129 1803.93,961.971 1805.79,953.813 1807.49,945.654 1809.03,937.496 1810.41,929.338 1811.63,921.18 1812.25,916.445 1812.69,913.022 1813.58,904.863 \n",
       "  1814.32,896.705 1814.9,888.547 1815.33,880.389 1815.6,872.231 1815.71,864.072 1815.68,855.914 1815.48,847.756 1815.13,839.598 1814.63,831.439 1813.97,823.281 \n",
       "  1813.15,815.123 1812.25,807.51 1812.18,806.965 1811.04,798.807 1809.74,790.648 1808.28,782.49 1806.66,774.332 1804.88,766.174 1802.95,758.016 1800.86,749.857 \n",
       "  1798.61,741.699 1796.2,733.541 1793.63,725.383 1792.08,720.73 1790.89,717.225 1787.96,709.066 1784.86,700.908 1781.61,692.75 1778.19,684.592 1774.62,676.433 \n",
       "  1771.91,670.517 1770.87,668.275 1766.9,660.117 1762.77,651.959 1758.47,643.801 1754.02,635.642 1751.74,631.628 1749.35,627.484 1744.48,619.326 1739.44,611.168 \n",
       "  1734.23,603.01 1731.57,598.972 1728.81,594.851 1723.16,586.693 1717.35,578.535 1711.4,570.425 1711.37,570.377 1705.1,562.219 1698.65,554.06 1692.04,545.902 \n",
       "  1691.23,544.938 1685.13,537.744 1678.03,529.586 1671.07,521.773 1670.75,521.427 1663.15,513.269 1655.37,505.111 1650.9,500.523 1647.34,496.953 1639.04,488.795 \n",
       "  1630.73,480.806 1630.55,480.636 1621.7,472.478 1612.66,464.32 1610.56,462.463 1603.28,456.162 1593.67,448.004 1590.39,445.274 1583.73,439.845 1573.51,431.687 \n",
       "  1570.22,429.105 1562.95,423.529 1552.12,415.371 1550.05,413.845 1540.88,407.213 1529.88,399.406 1529.38,399.054 1517.41,390.896 1509.71,385.736 1505.13,382.738 \n",
       "  1492.46,374.58 1489.54,372.735 1479.33,366.421 1469.38,360.371 1465.82,358.263 1451.84,350.105 1449.21,348.591 1437.35,341.947 1429.04,337.366 1422.38,333.789 \n",
       "  1408.87,326.639 1406.91,325.63 1390.84,317.472 1388.7,316.404 1374.13,309.314 1368.53,306.63 1356.79,301.156 1348.36,297.284 1338.76,292.998 1328.19,288.348 \n",
       "  1319.98,284.839 1308.02,279.803 1300.38,276.681 1287.85,271.633 1279.89,268.523 1267.68,263.824 1258.4,260.365 1247.52,256.36 1235.83,252.207 1227.35,249.229 \n",
       "  1212.06,244.048 1207.18,242.416 1187.01,235.91 1186.95,235.89 1166.84,229.723 1160.09,227.732 1146.67,223.823 1131.48,219.574 1126.5,218.199 1106.33,212.858 \n",
       "  1100.64,211.415 1086.16,207.793 1067.19,203.257 1065.99,202.975 1045.83,198.438 1030.21,195.099 1025.66,194.137 1005.49,190.097 988.814,186.941 985.318,186.287 \n",
       "  965.149,182.734 944.98,179.399 940.993,178.783 924.811,176.312 904.642,173.449 884.473,170.802 883,170.624 864.304,168.397 844.135,166.208 823.966,164.233 \n",
       "  803.797,162.471 803.73,162.466 783.628,160.941 763.459,159.622 743.29,158.514 723.121,157.617 702.952,156.931 682.783,156.456 662.614,156.192 642.445,156.139 \n",
       "  622.276,156.297 602.107,156.667 581.938,157.247 561.769,158.039 541.6,159.041 521.431,160.255 501.262,161.68 491.565,162.466 481.093,163.326 460.924,165.194 \n",
       "  440.755,167.276 420.585,169.572 412.126,170.624 400.416,172.098 380.247,174.854 360.078,177.825 354.017,178.783 339.909,181.039 319.74,184.483 306.207,186.941 \n",
       "  299.571,188.161 279.402,192.089 264.775,195.099 259.233,196.253 239.064,200.679 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9802)\" style=\"stroke:#ba3655; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  239.064,164.019 246.492,162.466 259.233,159.833 279.402,155.875 287.838,154.308 299.571,152.153 319.74,148.658 335.137,146.15 339.909,145.381 360.078,142.338 \n",
       "  380.247,139.502 391.827,137.992 400.416,136.884 420.585,134.487 440.755,132.294 460.924,130.306 466.26,129.833 481.093,128.535 501.262,126.972 521.431,125.61 \n",
       "  541.6,124.451 561.769,123.492 581.938,122.736 602.107,122.181 622.276,121.828 642.445,121.677 662.614,121.727 682.783,121.979 702.952,122.433 723.121,123.089 \n",
       "  743.29,123.946 763.459,125.005 783.628,126.266 803.797,127.728 823.966,129.393 828.73,129.833 844.135,131.275 864.304,133.365 884.473,135.66 903.292,137.992 \n",
       "  904.642,138.161 924.811,140.894 944.98,143.834 959.829,146.15 965.149,146.989 985.318,150.38 1005.49,153.979 1007.23,154.308 1025.66,157.827 1045.83,161.891 \n",
       "  1048.54,162.466 1065.99,166.208 1085.62,170.624 1086.16,170.748 1106.33,175.556 1119.29,178.783 1126.5,180.601 1146.67,185.904 1150.46,186.941 1166.84,191.48 \n",
       "  1179.4,195.099 1187.01,197.318 1206.63,203.257 1207.18,203.425 1227.35,209.834 1232.15,211.415 1247.52,216.533 1256.34,219.574 1267.68,223.532 1279.33,227.732 \n",
       "  1287.85,230.843 1301.25,235.89 1308.02,238.476 1322.18,244.048 1328.19,246.446 1342.21,252.207 1348.36,254.767 1361.43,260.365 1368.53,263.451 1379.88,268.523 \n",
       "  1388.7,272.515 1397.65,276.681 1408.87,281.974 1414.78,284.839 1429.04,291.846 1431.32,292.998 1447.27,301.156 1449.21,302.162 1462.64,309.314 1469.38,312.952 \n",
       "  1477.54,317.472 1489.54,324.219 1492,325.63 1505.95,333.789 1509.71,336.02 1519.47,341.947 1529.88,348.375 1532.62,350.105 1545.34,358.263 1550.05,361.337 \n",
       "  1557.68,366.421 1569.71,374.58 1570.22,374.931 1581.3,382.738 1590.39,389.252 1592.63,390.896 1603.59,399.054 1610.56,404.341 1614.27,407.213 1624.62,415.371 \n",
       "  1630.73,420.277 1634.7,423.529 1644.47,431.687 1650.9,437.156 1653.99,439.845 1663.21,448.004 1671.07,455.092 1672.23,456.162 1680.91,464.32 1689.42,472.478 \n",
       "  1691.23,474.252 1697.63,480.636 1705.63,488.795 1711.4,494.811 1713.42,496.953 1720.93,505.111 1728.27,513.269 1731.57,517.025 1735.37,521.427 1742.24,529.586 \n",
       "  1748.95,537.744 1751.74,541.227 1755.42,545.902 1761.68,554.06 1767.77,562.219 1771.91,567.913 1773.67,570.377 1779.33,578.535 1784.84,586.693 1790.18,594.851 \n",
       "  1792.08,597.842 1795.3,603.01 1800.24,611.168 1805.01,619.326 1809.63,627.484 1812.25,632.272 1814.06,635.642 1818.29,643.801 1822.36,651.959 1826.28,660.117 \n",
       "  1830.04,668.275 1832.42,673.649 1833.63,676.433 1837.02,684.592 1840.26,692.75 1843.35,700.908 1846.29,709.066 1849.07,717.225 1851.7,725.383 1852.59,728.285 \n",
       "  1854.16,733.541 1856.44,741.699 1858.58,749.857 1860.57,758.016 1862.41,766.174 1864.1,774.332 1865.63,782.49 1867.02,790.648 1868.26,798.807 1869.35,806.965 \n",
       "  1870.28,815.123 1871.07,823.281 1871.71,831.439 1872.2,839.598 1872.53,847.756 1872.72,855.914 1872.76,863.444 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9802)\" style=\"stroke:#ba3655; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  1872.76,864.282 1872.65,872.231 1872.38,880.389 1871.97,888.547 1871.41,896.705 1870.7,904.863 1869.83,913.022 1868.82,921.18 1867.66,929.338 1866.35,937.496 \n",
       "  1864.88,945.654 1863.27,953.813 1861.51,961.971 1859.6,970.129 1857.53,978.287 1855.32,986.445 1852.96,994.604 1852.59,995.806 1850.41,1002.76 1847.7,1010.92 \n",
       "  1844.84,1019.08 1841.83,1027.24 1838.66,1035.39 1835.34,1043.55 1832.42,1050.43 1831.86,1051.71 1828.18,1059.87 1824.34,1068.03 1820.34,1076.19 1816.19,1084.34 \n",
       "  1812.25,1091.82 1811.88,1092.5 1807.34,1100.66 1802.65,1108.82 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9802)\" style=\"stroke:#cb4148; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  1860.28,1108.82 1864.75,1100.66 1869.06,1092.5 1872.76,1085.26 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9802)\" style=\"stroke:#cb4148; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  1872.76,638.828 1871.16,635.642 1866.92,627.484 1862.53,619.326 1858,611.168 1853.31,603.01 1852.59,601.793 1848.4,594.851 1843.33,586.693 1838.1,578.535 \n",
       "  1832.73,570.377 1832.42,569.921 1827.11,562.219 1821.33,554.06 1815.39,545.902 1812.25,541.691 1809.25,537.744 1802.9,529.586 1796.38,521.427 1792.08,516.163 \n",
       "  1789.67,513.269 1782.72,505.111 1775.61,496.953 1771.91,492.799 1768.28,488.795 1760.71,480.636 1752.98,472.478 1751.74,471.197 1744.97,464.32 1736.76,456.162 \n",
       "  1731.57,451.106 1728.33,448.004 1719.63,439.845 1711.4,432.278 1710.75,431.687 1701.54,423.529 1692.15,415.371 1691.23,414.586 1682.43,407.213 1672.51,399.054 \n",
       "  1671.07,397.889 1662.24,390.896 1651.76,382.738 1650.9,382.075 1640.91,374.58 1630.73,367.069 1629.83,366.421 1618.36,358.263 1610.56,352.806 1606.62,350.105 \n",
       "  1594.52,341.947 1590.39,339.207 1582.05,333.789 1570.22,326.22 1569.28,325.63 1556.05,317.472 1550.05,313.832 1542.45,309.314 1529.88,301.962 1528.47,301.156 \n",
       "  1514,292.998 1509.71,290.615 1499.07,284.839 1489.54,279.738 1483.69,276.681 1469.38,269.302 1467.83,268.523 1451.38,260.365 1449.21,259.302 1434.33,252.207 \n",
       "  1429.04,249.712 1416.69,244.048 1408.87,240.506 1398.4,235.89 1388.7,231.667 1379.41,227.732 1368.53,223.183 1359.65,219.574 1348.36,215.04 1339.07,211.415 \n",
       "  1328.19,207.225 1317.58,203.257 1308.02,199.726 1295.11,195.099 1287.85,192.532 1271.55,186.941 1267.68,185.631 1247.52,179.016 1246.78,178.783 1227.35,172.692 \n",
       "  1220.51,170.624 1207.18,166.635 1192.73,162.466 1187.01,160.835 1166.84,155.294 1163.11,154.308 1146.67,150.015 1131.27,146.15 1126.5,144.968 1106.33,140.172 \n",
       "  1096.75,137.992 1086.16,135.609 1065.99,131.274 1058.96,129.833 1045.83,127.174 1025.66,123.29 1016.81,121.675 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9802)\" style=\"stroke:#d84c3d; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  1169.91,121.675 1187.01,126.165 1200.47,129.833 1207.18,131.682 1227.35,137.445 1229.2,137.992 1247.52,143.472 1256.17,146.15 1267.68,149.754 1281.77,154.308 \n",
       "  1287.85,156.297 1306.13,162.466 1308.02,163.112 1328.19,170.212 1329.33,170.624 1348.36,177.608 1351.47,178.783 1368.53,185.303 1372.7,186.941 1388.7,193.306 \n",
       "  1393.08,195.099 1408.87,201.63 1412.7,203.257 1429.04,210.287 1431.59,211.415 1449.21,219.29 1449.83,219.574 1467.4,227.732 1469.38,228.662 1484.37,235.89 \n",
       "  1489.54,238.416 1500.81,244.048 1509.71,248.563 1516.74,252.207 1529.88,259.118 1532.2,260.365 1547.16,268.523 1550.05,270.121 1561.66,276.681 1570.22,281.591 \n",
       "  1575.77,284.839 1589.49,292.998 1590.39,293.538 1602.76,301.156 1610.56,306.03 1615.71,309.314 1628.3,317.472 1630.73,319.066 1640.51,325.63 1650.9,332.707 \n",
       "  1652.45,333.789 1664.01,341.947 1671.07,347.007 1675.3,350.105 1686.28,358.263 1691.23,362.005 1696.97,366.421 1707.39,374.58 1711.4,377.773 1717.52,382.738 \n",
       "  1727.41,390.896 1731.57,394.39 1737.03,399.054 1746.4,407.213 1751.74,411.95 1755.53,415.371 1764.41,423.529 1771.91,430.557 1773.1,431.687 1781.49,439.845 \n",
       "  1789.73,448.004 1792.08,450.381 1797.7,456.162 1805.48,464.32 1812.25,471.574 1813.08,472.478 1820.41,480.636 1827.59,488.795 1832.42,494.408 1834.57,496.953 \n",
       "  1841.32,505.111 1847.92,513.269 1852.59,519.179 1854.33,521.427 1860.52,529.586 1866.56,537.744 1872.45,545.902 1872.76,546.34 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9802)\" style=\"stroke:#e55c2f; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  1872.76,475.407 1870.21,472.478 1862.97,464.32 1855.58,456.162 1852.59,452.917 1847.97,448.004 1840.15,439.845 1832.42,431.929 1832.18,431.687 1823.92,423.529 \n",
       "  1815.5,415.371 1812.25,412.279 1806.83,407.213 1797.95,399.054 1792.08,393.754 1788.86,390.896 1779.5,382.738 1771.91,376.237 1769.94,374.58 1760.09,366.421 \n",
       "  1751.74,359.627 1750.04,358.263 1739.66,350.105 1731.57,343.841 1729.08,341.947 1718.18,333.789 1711.4,328.8 1707.02,325.63 1695.56,317.472 1691.23,314.44 \n",
       "  1683.78,309.314 1671.75,301.156 1671.07,300.701 1659.3,292.998 1650.9,287.569 1646.58,284.839 1633.51,276.681 1630.73,274.971 1620.03,268.523 1610.56,262.891 \n",
       "  1606.22,260.365 1592.02,252.207 1590.39,251.284 1577.35,244.048 1570.22,240.147 1562.27,235.89 1550.05,229.428 1546.77,227.732 1530.79,219.574 1529.88,219.117 \n",
       "  1514.25,211.415 1509.71,209.21 1497.19,203.257 1489.54,199.67 1479.57,195.099 1469.38,190.484 1461.35,186.941 1449.21,181.639 1442.49,178.783 1429.04,173.124 \n",
       "  1422.94,170.624 1408.87,164.927 1402.63,162.466 1388.7,157.035 1381.51,154.308 1368.53,149.44 1359.51,146.15 1348.36,142.131 1336.54,137.992 1328.19,135.099 \n",
       "  1312.53,129.833 1308.02,128.333 1287.85,121.828 1287.37,121.675 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9802)\" style=\"stroke:#ef6d21; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  1386.33,121.675 1388.7,122.534 1408.29,129.833 1408.87,130.05 1429.04,137.852 1429.39,137.992 1449.21,145.948 1449.7,146.15 1469.29,154.308 1469.38,154.344 \n",
       "  1488.19,162.466 1489.54,163.058 1506.46,170.624 1509.71,172.098 1524.14,178.783 1529.88,181.475 1541.27,186.941 1550.05,191.203 1557.9,195.099 1570.22,201.294 \n",
       "  1574.04,203.257 1589.72,211.415 1590.39,211.766 1604.9,219.574 1610.56,222.659 1619.67,227.732 1630.73,233.964 1634.07,235.89 1648.07,244.048 1650.9,245.72 \n",
       "  1661.66,252.207 1671.07,257.953 1674.94,260.365 1687.85,268.523 1691.23,270.687 1700.42,276.681 1711.4,283.954 1712.72,284.839 1724.64,292.998 1731.57,297.809 \n",
       "  1736.31,301.156 1747.68,309.314 1751.74,312.274 1758.75,317.472 1769.59,325.63 1771.91,327.405 1780.11,333.789 1790.44,341.947 1792.08,343.265 1800.45,350.105 \n",
       "  1810.28,358.263 1812.25,359.924 1819.82,366.421 1829.17,374.58 1832.42,377.465 1838.26,382.738 1847.14,390.896 1852.59,395.98 1855.82,399.054 1864.26,407.213 \n",
       "  1872.55,415.371 1872.76,415.577 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9802)\" style=\"stroke:#f68211; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  1872.76,362.896 1867.54,358.263 1858.2,350.105 1852.59,345.279 1848.65,341.947 1838.84,333.789 1832.42,328.521 1828.83,325.63 1818.55,317.472 1812.25,312.545 \n",
       "  1808.04,309.314 1797.27,301.156 1792.08,297.283 1786.23,292.998 1774.95,284.839 1771.91,282.676 1763.35,276.681 1751.74,268.671 1751.52,268.523 1739.32,260.365 \n",
       "  1731.57,255.256 1726.86,252.207 1714.09,244.048 1711.4,242.355 1700.95,235.89 1691.23,229.958 1687.52,227.732 1673.72,219.574 1671.07,218.026 1659.52,211.415 \n",
       "  1650.9,206.544 1644.96,203.257 1630.73,195.468 1630.04,195.099 1614.63,186.941 1610.56,184.81 1598.79,178.783 1590.39,174.528 1582.51,170.624 1570.22,164.606 \n",
       "  1565.75,162.466 1550.05,155.03 1548.49,154.308 1530.67,146.15 1529.88,145.793 1512.25,137.992 1509.71,136.883 1493.21,129.833 1489.54,128.282 1473.53,121.675 \n",
       "  \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9802)\" style=\"stroke:#fa9607; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  1552.39,121.675 1570.22,129.745 1570.41,129.833 1587.85,137.992 1590.39,139.191 1604.79,146.15 1610.56,148.97 1621.25,154.308 1630.73,159.093 1637.27,162.466 \n",
       "  1650.9,169.571 1652.88,170.624 1668.03,178.783 1671.07,180.436 1682.77,186.941 1691.23,191.701 1697.16,195.099 1711.22,203.257 1711.4,203.368 1724.84,211.415 \n",
       "  1731.57,215.499 1738.17,219.574 1751.2,227.732 1751.74,228.072 1763.85,235.89 1771.91,241.161 1776.25,244.048 1788.34,252.207 1792.08,254.765 1800.13,260.365 \n",
       "  1811.69,268.523 1812.25,268.923 1822.91,276.681 1832.42,283.698 1833.94,284.839 1844.66,292.998 1852.59,299.123 1855.18,301.156 1865.41,309.314 1872.76,315.252 \n",
       "  \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9802)\" style=\"stroke:#fbac11; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  1872.76,271.443 1868.88,268.523 1857.89,260.365 1852.59,256.481 1846.65,252.207 1835.17,244.048 1832.42,242.116 1823.39,235.89 1812.25,228.308 1811.39,227.732 \n",
       "  1799.03,219.574 1792.08,215.039 1786.42,211.415 1773.53,203.257 1771.91,202.246 1760.27,195.099 1751.74,189.93 1746.72,186.941 1732.85,178.783 1731.57,178.039 \n",
       "  1718.58,170.624 1711.4,166.581 1703.97,162.466 1691.23,155.505 1689,154.308 1673.62,146.15 1671.07,144.813 1657.79,137.992 1650.9,134.486 1641.56,129.833 \n",
       "  1630.73,124.5 1624.87,121.675 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9802)\" style=\"stroke:#f9c32a; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  1692.39,121.675 1708,129.833 1711.4,131.63 1723.22,137.992 1731.57,142.543 1738.07,146.15 1751.74,153.821 1752.59,154.308 1766.7,162.466 1771.91,165.513 \n",
       "  1780.49,170.624 1792.08,177.607 1794,178.783 1807.14,186.941 1812.25,190.151 1819.99,195.099 1832.42,203.142 1832.59,203.257 1844.83,211.415 1852.59,216.647 \n",
       "  1856.85,219.574 1868.59,227.732 1872.76,230.664 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9802)\" style=\"stroke:#f5d949; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  1872.76,192.364 1864.55,186.941 1852.59,179.124 1852.06,178.783 1839.2,170.624 1832.42,166.367 1826.09,162.466 1812.71,154.308 1812.25,154.03 1798.94,146.15 \n",
       "  1792.08,142.13 1784.89,137.992 1771.91,130.61 1770.52,129.833 1755.76,121.675 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9802)\" style=\"stroke:#f2ee74; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  1815.71,121.675 1829.71,129.833 1832.42,131.426 1843.37,137.992 1852.59,143.574 1856.77,146.15 1869.85,154.308 1872.76,156.137 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9802)\" style=\"stroke:#cb4148; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  278.066,121.675 259.233,125.207 239.064,129.191 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9802)\" style=\"stroke:#060419; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  570.191,643.801 561.769,644.887 541.6,648.181 522.492,651.959 521.431,652.177 501.262,657.044 490.169,660.117 481.093,662.735 464.083,668.275 460.924,669.348 \n",
       "  442.206,676.433 440.755,677.008 423.364,684.592 420.585,685.86 406.782,692.75 400.416,696.084 391.927,700.908 380.247,707.891 378.424,709.066 366.428,717.225 \n",
       "  360.078,721.793 355.428,725.383 345.47,733.541 339.909,738.396 336.366,741.699 328.188,749.857 320.585,758.016 319.74,758.995 313.924,766.174 307.854,774.332 \n",
       "  302.323,782.49 299.571,786.988 297.458,790.648 293.257,798.807 289.565,806.965 286.383,815.123 283.709,823.281 281.545,831.439 279.89,839.598 279.402,843.074 \n",
       "  278.78,847.756 278.177,855.914 278.057,864.072 278.418,872.231 279.262,880.389 279.402,881.252 280.654,888.547 282.564,896.705 284.982,904.863 287.91,913.022 \n",
       "  291.347,921.18 295.294,929.338 299.571,937.17 299.76,937.496 305.021,945.654 310.822,953.813 317.162,961.971 319.74,965.028 324.315,970.129 332.205,978.287 \n",
       "  339.909,985.713 340.721,986.445 350.372,994.604 360.078,1002.32 360.677,1002.76 372.344,1010.92 380.247,1016.15 385.016,1019.08 399.016,1027.24 400.416,1028.01 \n",
       "  414.858,1035.39 420.585,1038.19 432.612,1043.55 440.755,1047.03 452.866,1051.71 460.924,1054.7 476.478,1059.87 481.093,1061.34 501.262,1067.04 505.263,1068.03 \n",
       "  521.431,1071.85 541.6,1075.92 543.206,1076.19 561.769,1079.16 581.938,1081.71 602.107,1083.58 614.965,1084.34 622.276,1084.76 642.445,1085.25 662.614,1085.09 \n",
       "  680.917,1084.34 682.783,1084.27 702.952,1082.73 723.121,1080.52 743.29,1077.63 751.441,1076.19 763.459,1073.97 783.628,1069.56 789.64,1068.03 803.797,1064.28 \n",
       "  818.47,1059.87 823.966,1058.15 842.271,1051.71 844.135,1051.03 862.513,1043.55 864.304,1042.79 880.146,1035.39 884.473,1033.28 895.809,1027.24 904.642,1022.29 \n",
       "  909.948,1019.08 922.738,1010.92 924.811,1009.52 934.142,1002.76 944.766,994.604 944.98,994.428 954.114,986.445 962.856,978.287 965.149,975.992 970.645,970.129 \n",
       "  977.737,961.971 984.272,953.813 985.318,952.385 989.965,945.654 995.074,937.496 999.658,929.338 1003.72,921.18 1005.49,917.1 1007.16,913.022 1010.01,904.863 \n",
       "  1012.36,896.705 1014.22,888.547 1015.58,880.389 1016.44,872.231 1016.82,864.072 1016.69,855.914 1016.07,847.756 1014.96,839.598 1013.35,831.439 1011.24,823.281 \n",
       "  1008.64,815.123 1005.55,806.965 1005.49,806.824 1001.75,798.807 997.432,790.648 992.585,782.49 987.214,774.332 985.318,771.708 981.074,766.174 974.26,758.016 \n",
       "  966.891,749.857 965.149,748.065 958.559,741.699 949.521,733.541 944.98,729.695 939.533,725.383 928.592,717.225 924.811,714.56 916.428,709.066 904.642,701.744 \n",
       "  903.187,700.908 888.247,692.75 884.473,690.786 871.51,684.592 864.304,681.303 852.593,676.433 844.135,673.068 830.79,668.275 823.966,665.926 805.05,660.117 \n",
       "  803.797,659.748 783.628,654.52 772.163,651.959 763.459,650.088 743.29,646.447 725.181,643.801 723.121,643.511 702.952,641.339 682.783,639.836 662.614,639.001 \n",
       "  642.445,638.834 622.276,639.335 602.107,640.504 581.938,642.342 570.191,643.801 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9802)\" style=\"stroke:#ff0000; stroke-width:12; stroke-opacity:1; fill:none\" points=\"\n",
       "  1872.76,1108.82 1866.01,1100.66 1859.25,1092.5 1852.5,1084.34 1845.75,1076.19 1839,1068.03 1832.25,1059.87 1825.5,1051.71 1818.75,1043.55 1812,1035.39 \n",
       "  1805.25,1027.24 1798.5,1019.08 1791.75,1010.92 1785,1002.76 1778.24,994.604 1771.49,986.445 1764.74,978.287 1757.99,970.129 1751.24,961.971 1744.49,953.813 \n",
       "  1737.74,945.654 1730.99,937.496 1724.24,929.338 1717.49,921.18 1710.74,913.022 1703.99,904.863 1697.24,896.705 1690.48,888.547 1683.73,880.389 1676.98,872.231 \n",
       "  1670.23,864.072 1663.48,855.914 1656.73,847.756 1649.98,839.598 1643.23,831.439 1636.48,823.281 1629.73,815.123 1622.98,806.965 1616.23,798.807 1609.48,790.648 \n",
       "  1602.72,782.49 1595.97,774.332 1589.22,766.174 1582.47,758.016 1575.72,749.857 1568.97,741.699 1562.22,733.541 1555.47,725.383 1548.72,717.225 1541.97,709.066 \n",
       "  1535.22,700.908 1528.47,692.75 1521.71,684.592 1514.96,676.433 1508.21,668.275 1501.46,660.117 1494.71,651.959 1487.96,643.801 1481.21,635.642 1474.46,627.484 \n",
       "  1467.71,619.326 1460.96,611.168 1454.21,603.01 1447.46,594.851 1440.71,586.693 1433.95,578.535 1427.2,570.377 1420.45,562.219 1413.7,554.06 1406.95,545.902 \n",
       "  1400.2,537.744 1393.45,529.586 1386.7,521.427 1379.95,513.269 1373.2,505.111 1366.45,496.953 1359.7,488.795 1352.94,480.636 1346.19,472.478 1339.44,464.32 \n",
       "  1332.69,456.162 1325.94,448.004 1319.19,439.845 1312.44,431.687 1305.69,423.529 1298.94,415.371 1292.19,407.213 1285.44,399.054 1278.69,390.896 1271.94,382.738 \n",
       "  1265.18,374.58 1258.43,366.421 1251.68,358.263 1244.93,350.105 1238.18,341.947 1231.43,333.789 1224.68,325.63 1217.93,317.472 1211.18,309.314 1204.43,301.156 \n",
       "  1197.68,292.998 1190.93,284.839 1184.18,276.681 1177.42,268.523 1170.67,260.365 1163.92,252.207 1157.17,244.048 1150.42,235.89 1143.67,227.732 1136.92,219.574 \n",
       "  1130.17,211.415 1123.42,203.257 1116.67,195.099 1109.92,186.941 1103.17,178.783 1096.41,170.624 1089.66,162.466 1082.91,154.308 1076.16,146.15 1069.41,137.992 \n",
       "  1062.66,129.833 1055.91,121.675 \n",
       "  \"/>\n",
       "<circle clip-path=\"url(#clip9802)\" cx=\"1464.33\" cy=\"615.247\" r=\"14\" fill=\"#ff0000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"2.56\"/>\n",
       "<path clip-path=\"url(#clip9800)\" d=\"\n",
       "M1414.54 357.835 L1815.16 357.835 L1815.16 176.395 L1414.54 176.395  Z\n",
       "  \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
       "<polyline clip-path=\"url(#clip9800)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  1414.54,357.835 1815.16,357.835 1815.16,176.395 1414.54,176.395 1414.54,357.835 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip9800)\" style=\"stroke:#ff0000; stroke-width:12; stroke-opacity:1; fill:none\" points=\"\n",
       "  1433.74,236.875 1548.94,236.875 \n",
       "  \"/>\n",
       "<g clip-path=\"url(#clip9800)\">\n",
       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:start;\" transform=\"rotate(0, 1568.14, 254.375)\" x=\"1568.14\" y=\"254.375\">restriction</text>\n",
       "</g>\n",
       "<circle clip-path=\"url(#clip9800)\" cx=\"1500.94\" cy=\"297.355\" r=\"21\" fill=\"#ff0000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"2.56\"/>\n",
       "<g clip-path=\"url(#clip9800)\">\n",
       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:start;\" transform=\"rotate(0, 1568.14, 314.855)\" x=\"1568.14\" y=\"314.855\">optimum</text>\n",
       "</g>\n",
       "</svg>\n"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "contour(x,y,loss2d',\n",
    "        xlims = (1,5),\n",
    "        ylims = (-1,0),\n",
    "        legend = false,\n",
    "        levels = 21, \n",
    "        title = \"Contour plot of loss function\",\n",
    "        xlabel = \"x\",\n",
    "        ylabel = \"y\" )\n",
    "\n",
    "plot!(3 .- 2*y,y,linecolor=:red,linewidth=3,label=\"restriction\",legend=true)\n",
    "scatter!([4],[-0.5],markercolor=:red,label=\"optimum\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "minimum at [3.999999990948508, -0.4999999954742538] and XTOL_REACHED\n"
     ]
    }
   ],
   "source": [
    "function EqConstrfun(p,grad)   #equality constraint\n",
    "    (x,y) = (p[1],p[2])\n",
    "    c  = x + 2*y - 3\n",
    "    return c\n",
    "end\n",
    "\n",
    "opt = Opt(:LN_COBYLA, 2)\n",
    "equality_constraint!(opt,(p,g) -> EqConstrfun(p,g))\n",
    "min_objective!(opt,(p,g)->lossfun(p,g,0))\n",
    "xtol_rel!(opt,1e-8)\n",
    "\n",
    "(minf,minx,ret) = optimize(opt,[3.0, 0.0])\n",
    "println(\"minimum at $minx and $ret\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Optimization with Inequality Constraints\n",
    "\n",
    "We now impose the constraint that $y \\le -(x-4)^2$."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n",
       "<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"480\" height=\"320\" viewBox=\"0 0 1920 1280\">\n",
       "<defs>\n",
       "  <clipPath id=\"clip0200\">\n",
       "    <rect x=\"0\" y=\"0\" width=\"1920\" height=\"1280\"/>\n",
       "  </clipPath>\n",
       "</defs>\n",
       "<path clip-path=\"url(#clip0200)\" d=\"\n",
       "M0 1280 L1920 1280 L1920 0 L0 0  Z\n",
       "  \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
       "<defs>\n",
       "  <clipPath id=\"clip0201\">\n",
       "    <rect x=\"384\" y=\"0\" width=\"1345\" height=\"1280\"/>\n",
       "  </clipPath>\n",
       "</defs>\n",
       "<path clip-path=\"url(#clip0200)\" d=\"\n",
       "M239.064 1108.82 L1872.76 1108.82 L1872.76 121.675 L239.064 121.675  Z\n",
       "  \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
       "<defs>\n",
       "  <clipPath id=\"clip0202\">\n",
       "    <rect x=\"239\" y=\"121\" width=\"1635\" height=\"988\"/>\n",
       "  </clipPath>\n",
       "</defs>\n",
       "<polyline clip-path=\"url(#clip0202)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
       "  239.064,1108.82 239.064,121.675 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip0202)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
       "  647.487,1108.82 647.487,121.675 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip0202)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
       "  1055.91,1108.82 1055.91,121.675 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip0202)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
       "  1464.33,1108.82 1464.33,121.675 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip0202)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
       "  1872.76,1108.82 1872.76,121.675 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip0202)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
       "  239.064,1108.82 1872.76,1108.82 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip0202)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
       "  239.064,911.39 1872.76,911.39 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip0202)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
       "  239.064,713.961 1872.76,713.961 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip0202)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
       "  239.064,516.533 1872.76,516.533 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip0202)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
       "  239.064,319.104 1872.76,319.104 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip0202)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n",
       "  239.064,121.675 1872.76,121.675 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip0200)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  239.064,1108.82 1872.76,1108.82 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip0200)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  239.064,1108.82 239.064,121.675 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip0200)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  239.064,1108.82 239.064,1096.97 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip0200)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  647.487,1108.82 647.487,1096.97 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip0200)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  1055.91,1108.82 1055.91,1096.97 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip0200)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  1464.33,1108.82 1464.33,1096.97 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip0200)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  1872.76,1108.82 1872.76,1096.97 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip0200)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  239.064,1108.82 258.668,1108.82 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip0200)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  239.064,911.39 258.668,911.39 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip0200)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  239.064,713.961 258.668,713.961 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip0200)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  239.064,516.533 258.668,516.533 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip0200)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  239.064,319.104 258.668,319.104 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip0200)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  239.064,121.675 258.668,121.675 \n",
       "  \"/>\n",
       "<g clip-path=\"url(#clip0200)\">\n",
       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 239.064, 1160.42)\" x=\"239.064\" y=\"1160.42\">1</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip0200)\">\n",
       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 647.487, 1160.42)\" x=\"647.487\" y=\"1160.42\">2</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip0200)\">\n",
       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 1055.91, 1160.42)\" x=\"1055.91\" y=\"1160.42\">3</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip0200)\">\n",
       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 1464.33, 1160.42)\" x=\"1464.33\" y=\"1160.42\">4</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip0200)\">\n",
       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 1872.76, 1160.42)\" x=\"1872.76\" y=\"1160.42\">5</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip0200)\">\n",
       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 219.864, 1126.32)\" x=\"219.864\" y=\"1126.32\">-1.0</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip0200)\">\n",
       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 219.864, 928.89)\" x=\"219.864\" y=\"928.89\">-0.8</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip0200)\">\n",
       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 219.864, 731.461)\" x=\"219.864\" y=\"731.461\">-0.6</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip0200)\">\n",
       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 219.864, 534.033)\" x=\"219.864\" y=\"534.033\">-0.4</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip0200)\">\n",
       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 219.864, 336.604)\" x=\"219.864\" y=\"336.604\">-0.2</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip0200)\">\n",
       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 219.864, 139.175)\" x=\"219.864\" y=\"139.175\">0.0</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip0200)\">\n",
       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:84px; text-anchor:middle;\" transform=\"rotate(0, 1055.91, 73.2)\" x=\"1055.91\" y=\"73.2\">Contour plot of loss function</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip0200)\">\n",
       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:66px; text-anchor:middle;\" transform=\"rotate(0, 1055.91, 1237.88)\" x=\"1055.91\" y=\"1237.88\">x</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip0200)\">\n",
       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:66px; text-anchor:middle;\" transform=\"rotate(-90, 94.0861, 615.247)\" x=\"94.0861\" y=\"615.247\">y</text>\n",
       "</g>\n",
       "<polyline clip-path=\"url(#clip0202)\" style=\"stroke:#130a34; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  321.681,1108.82 319.74,1107.89 305.512,1100.66 299.571,1097.54 290.538,1092.5 279.402,1086.07 276.568,1084.34 263.673,1076.19 259.233,1073.27 251.664,1068.03 \n",
       "  240.338,1059.87 239.064,1058.91 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip0202)\" style=\"stroke:#130a34; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  973.198,1108.82 985.318,1102.84 989.488,1100.66 1004.55,1092.5 1005.49,1091.98 1018.35,1084.34 1025.66,1079.84 1031.29,1076.19 1043.38,1068.03 1045.83,1066.31 \n",
       "  1054.54,1059.87 1065.14,1051.71 1065.99,1051.03 1074.86,1043.55 1084.11,1035.39 1086.16,1033.5 1092.63,1027.24 1100.65,1019.08 1106.33,1013 1108.19,1010.92 \n",
       "  1115.09,1002.76 1121.6,994.604 1126.5,988.072 1127.67,986.445 1133.17,978.287 1138.29,970.129 1143.05,961.971 1146.67,955.219 1147.4,953.813 1151.24,945.654 \n",
       "  1154.73,937.496 1157.87,929.338 1160.64,921.18 1163.06,913.022 1165.11,904.863 1166.81,896.705 1166.84,896.552 1168.11,888.547 1169.05,880.389 1169.66,872.231 \n",
       "  1169.91,864.072 1169.83,855.914 1169.4,847.756 1168.62,839.598 1167.5,831.439 1166.84,827.735 1166.01,823.281 1164.13,815.123 1161.89,806.965 1159.3,798.807 \n",
       "  1156.34,790.648 1153.03,782.49 1149.36,774.332 1146.67,768.875 1145.28,766.174 1140.72,758.016 1135.78,749.857 1130.47,741.699 1126.5,736.007 1124.71,733.541 \n",
       "  1118.39,725.383 1111.69,717.225 1106.33,711.068 1104.51,709.066 1096.69,700.908 1088.47,692.75 1086.16,690.572 1079.54,684.592 1070.08,676.433 1065.99,673.067 \n",
       "  1059.9,668.275 1049.08,660.117 1045.83,657.764 1037.39,651.959 1025.66,644.193 1025.03,643.801 1011.54,635.642 1005.49,632.115 997.085,627.484 985.318,621.22 \n",
       "  981.541,619.326 965.149,611.378 964.687,611.168 946.166,603.01 944.98,602.503 925.794,594.851 924.811,594.471 904.642,587.216 903.069,586.693 884.473,580.69 \n",
       "  877.205,578.535 864.304,574.818 847.381,570.377 844.135,569.548 823.966,564.903 810.899,562.219 803.797,560.799 783.628,557.255 763.459,554.201 762.354,554.06 \n",
       "  743.29,551.698 723.121,549.676 702.952,548.129 682.783,547.058 662.614,546.463 642.445,546.344 622.276,546.701 602.107,547.534 581.938,548.843 561.769,550.628 \n",
       "  541.6,552.888 532.962,554.06 521.431,555.667 501.262,558.966 483.942,562.219 481.093,562.768 460.924,567.163 447.685,570.377 440.755,572.107 420.585,577.659 \n",
       "  417.674,578.535 400.416,583.879 392.041,586.693 380.247,590.775 369.328,594.851 360.078,598.411 348.939,603.01 339.909,606.857 330.433,611.168 319.74,616.193 \n",
       "  313.471,619.326 299.571,626.511 297.794,627.484 283.409,635.642 279.402,637.998 270.06,643.801 259.233,650.781 257.499,651.959 245.944,660.117 239.064,665.175 \n",
       "  \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip0202)\" style=\"stroke:#240b4e; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  239.064,564.4 243.5,562.219 259.233,554.689 260.617,554.06 279.055,545.902 279.402,545.753 299.022,537.744 299.571,537.525 319.74,529.949 320.769,529.586 \n",
       "  339.909,522.989 344.748,521.427 360.078,516.597 371.405,513.269 380.247,510.732 400.416,505.365 401.452,505.111 420.585,500.525 436.876,496.953 440.755,496.121 \n",
       "  460.924,492.199 480.425,488.795 481.093,488.681 501.262,485.63 521.431,482.973 541.6,480.71 542.391,480.636 561.769,478.878 581.938,477.433 602.107,476.374 \n",
       "  622.276,475.699 642.445,475.41 662.614,475.507 682.783,475.988 702.952,476.855 723.121,478.107 743.29,479.745 752.178,480.636 763.459,481.792 783.628,484.252 \n",
       "  803.797,487.106 814.284,488.795 823.966,490.388 844.135,494.11 858.041,496.953 864.304,498.262 884.473,502.891 893.358,505.111 904.642,507.996 923.712,513.269 \n",
       "  924.811,513.58 944.98,519.721 950.219,521.427 965.149,526.41 974.081,529.586 985.318,533.681 995.822,537.744 1005.49,541.578 1015.79,545.902 1025.66,550.151 \n",
       "  1034.26,554.06 1045.83,559.454 1051.46,562.219 1065.99,569.548 1067.56,570.377 1082.55,578.535 1086.16,580.556 1096.63,586.693 1106.33,592.554 1109.97,594.851 \n",
       "  1122.51,603.01 1126.5,605.691 1134.32,611.168 1145.6,619.326 1146.67,620.131 1156.11,627.484 1166.22,635.642 1166.84,636.161 1175.63,643.801 1184.66,651.959 \n",
       "  1187.01,654.159 1193.13,660.117 1201.17,668.275 1207.18,674.633 1208.82,676.433 1215.94,684.592 1222.74,692.75 1227.35,698.554 1229.15,700.908 1235.1,709.066 \n",
       "  1240.74,717.225 1246.07,725.383 1247.52,727.732 1250.97,733.541 1255.53,741.699 1259.79,749.857 1263.75,758.016 1267.41,766.174 1267.68,766.851 1270.67,774.332 \n",
       "  1273.63,782.49 1276.31,790.648 1278.69,798.807 1280.79,806.965 1282.6,815.123 1284.12,823.281 1285.35,831.439 1286.29,839.598 1286.94,847.756 1287.3,855.914 \n",
       "  1287.37,864.072 1287.15,872.231 1286.65,880.389 1285.85,888.547 1284.77,896.705 1283.39,904.863 1281.73,913.022 1279.78,921.18 1277.54,929.338 1275.01,937.496 \n",
       "  1272.19,945.654 1269.08,953.813 1267.68,957.157 1265.61,961.971 1261.8,970.129 1257.7,978.287 1253.29,986.445 1248.58,994.604 1247.52,996.342 1243.44,1002.76 \n",
       "  1237.96,1010.92 1232.16,1019.08 1227.35,1025.52 1226.02,1027.24 1219.38,1035.39 1212.42,1043.55 1207.18,1049.43 1205.07,1051.71 1197.19,1059.87 1188.98,1068.03 \n",
       "  1187.01,1069.91 1180.19,1076.19 1170.98,1084.34 1166.84,1087.88 1161.21,1092.5 1150.92,1100.66 1146.67,1103.91 1140,1108.82 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip0202)\" style=\"stroke:#390962; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  1263.17,1108.82 1267.68,1104.68 1271.92,1100.66 1280.24,1092.5 1287.85,1084.76 1288.25,1084.34 1295.75,1076.19 1302.97,1068.03 1308.02,1062.08 1309.85,1059.87 \n",
       "  1316.3,1051.71 1322.49,1043.55 1328.19,1035.68 1328.39,1035.39 1333.87,1027.24 1339.08,1019.08 1344.03,1010.92 1348.36,1003.37 1348.7,1002.76 1353,994.604 \n",
       "  1357.03,986.445 1360.82,978.287 1364.34,970.129 1367.61,961.971 1368.53,959.482 1370.57,953.813 1373.25,945.654 1375.68,937.496 1377.86,929.338 1379.79,921.18 \n",
       "  1381.47,913.022 1382.91,904.863 1384.09,896.705 1385.03,888.547 1385.71,880.389 1386.15,872.231 1386.34,864.072 1386.27,855.914 1385.96,847.756 1385.4,839.598 \n",
       "  1384.59,831.439 1383.53,823.281 1382.22,815.123 1380.66,806.965 1378.86,798.807 1376.8,790.648 1374.49,782.49 1371.94,774.332 1369.13,766.174 1368.53,764.565 \n",
       "  1366.01,758.016 1362.61,749.857 1358.96,741.699 1355.05,733.541 1350.88,725.383 1348.36,720.735 1346.4,717.225 1341.59,709.066 1336.51,700.908 1331.16,692.75 \n",
       "  1328.19,688.428 1325.48,684.592 1319.43,676.433 1313.11,668.275 1308.02,661.983 1306.47,660.117 1299.39,651.959 1292.04,643.801 1287.85,639.334 1284.29,635.642 \n",
       "  1276.12,627.484 1267.68,619.352 1267.66,619.326 1258.62,611.168 1249.28,603.01 1247.52,601.515 1239.38,594.851 1229.1,586.693 1227.35,585.34 1218.21,578.535 \n",
       "  1207.18,570.557 1206.92,570.377 1194.9,562.219 1187.01,557.01 1182.37,554.06 1169.2,545.902 1166.84,544.477 1155.24,537.744 1146.67,532.889 1140.6,529.586 \n",
       "  1126.5,522.106 1125.17,521.427 1108.74,513.269 1106.33,512.1 1091.28,505.111 1086.16,502.788 1072.7,496.953 1065.99,494.109 1052.84,488.795 1045.83,486.023 \n",
       "  1031.49,480.636 1025.66,478.492 1008.41,472.478 1005.49,471.482 985.318,464.973 983.169,464.32 965.149,458.953 955.162,456.162 944.98,453.373 924.811,448.21 \n",
       "  923.944,448.004 904.642,443.499 887.706,439.845 884.473,439.161 864.304,435.241 844.232,431.687 844.135,431.67 823.966,428.508 803.797,425.687 786.233,423.529 \n",
       "  783.628,423.215 763.459,421.117 743.29,419.356 723.121,417.929 702.952,416.839 682.783,416.084 662.614,415.664 642.445,415.58 622.276,415.832 602.107,416.419 \n",
       "  581.938,417.342 561.769,418.6 541.6,420.194 521.431,422.124 508.922,423.529 501.262,424.405 481.093,427.055 460.924,430.046 450.996,431.687 440.755,433.412 \n",
       "  420.585,437.158 407.345,439.845 400.416,441.279 380.247,445.808 371.182,448.004 360.078,450.746 339.909,456.09 339.655,456.162 319.74,461.91 311.891,464.32 \n",
       "  299.571,468.18 286.628,472.478 279.402,474.928 263.467,480.636 259.233,482.186 242.087,488.795 239.064,489.985 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip0202)\" style=\"stroke:#4c0c6a; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  239.064,428.166 252.915,423.529 259.233,421.453 278.728,415.371 279.402,415.164 299.571,409.316 307.257,407.213 319.74,403.857 338.743,399.054 339.909,398.765 \n",
       "  360.078,394.074 374.739,390.896 380.247,389.722 400.416,385.738 416.892,382.738 420.585,382.077 440.755,378.774 460.924,375.778 469.912,374.58 481.093,373.114 \n",
       "  501.262,370.772 521.431,368.733 541.6,366.995 549.663,366.421 561.769,365.574 581.938,364.459 602.107,363.642 622.276,363.122 642.445,362.899 662.614,362.973 \n",
       "  682.783,363.345 702.952,364.014 723.121,364.98 743.29,366.243 745.599,366.421 763.459,367.826 783.628,369.715 803.797,371.905 823.966,374.398 825.276,374.58 \n",
       "  844.135,377.237 864.304,380.387 878.023,382.738 884.473,383.862 904.642,387.691 920.253,390.896 924.811,391.848 944.98,396.38 956.104,399.054 965.149,401.268 \n",
       "  985.318,406.527 987.794,407.213 1005.49,412.199 1016.13,415.371 1025.66,418.265 1042.09,423.529 1045.83,424.747 1065.99,431.67 1066.04,431.687 1086.16,439.074 \n",
       "  1088.17,439.845 1106.33,446.962 1108.88,448.004 1126.5,455.365 1128.33,456.162 1146.67,464.313 1146.69,464.32 1163.96,472.478 1166.84,473.869 1180.34,480.636 \n",
       "  1187.01,484.055 1195.92,488.795 1207.18,494.914 1210.8,496.953 1224.95,505.111 1227.35,506.522 1238.4,513.269 1247.52,518.966 1251.32,521.427 1263.65,529.586 \n",
       "  1267.68,532.323 1275.42,537.744 1286.77,545.902 1287.85,546.7 1297.53,554.06 1307.97,562.219 1308.02,562.265 1317.82,570.377 1327.4,578.535 1328.19,579.227 \n",
       "  1336.46,586.693 1345.24,594.851 1348.36,597.845 1353.6,603.01 1361.61,611.168 1368.53,618.448 1369.34,619.326 1376.63,627.484 1383.68,635.642 1388.7,641.671 \n",
       "  1390.42,643.801 1396.79,651.959 1402.92,660.117 1408.8,668.275 1408.87,668.367 1414.3,676.433 1419.56,684.592 1424.58,692.75 1429.04,700.351 1429.36,700.908 \n",
       "  1433.79,709.066 1437.99,717.225 1441.96,725.383 1445.7,733.541 1449.21,741.675 1449.22,741.699 1452.42,749.857 1455.39,758.016 1458.14,766.174 1460.67,774.332 \n",
       "  1462.97,782.49 1465.05,790.648 1466.9,798.807 1468.53,806.965 1469.38,811.89 1469.92,815.123 1471.07,823.281 1472,831.439 1472.71,839.598 1473.2,847.756 \n",
       "  1473.48,855.914 1473.53,864.072 1473.37,872.231 1472.99,880.389 1472.38,888.547 1471.56,896.705 1470.52,904.863 1469.38,912.279 1469.26,913.022 1467.74,921.18 \n",
       "  1466,929.338 1464.04,937.496 1461.85,945.654 1459.43,953.813 1456.8,961.971 1453.93,970.129 1450.84,978.287 1449.21,982.322 1447.49,986.445 1443.86,994.604 \n",
       "  1440.01,1002.76 1435.92,1010.92 1431.6,1019.08 1429.04,1023.68 1427,1027.24 1422.1,1035.39 1416.96,1043.55 1411.58,1051.71 1408.87,1055.66 1405.89,1059.87 \n",
       "  1399.89,1068.03 1393.64,1076.19 1388.7,1082.4 1387.11,1084.34 1380.19,1092.5 1373.02,1100.66 1368.53,1105.6 1365.52,1108.82 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip0202)\" style=\"stroke:#5e126e; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  1454.96,1108.82 1461.64,1100.66 1468.1,1092.5 1469.38,1090.83 1474.21,1084.34 1480.07,1076.19 1485.71,1068.03 1489.54,1062.26 1491.1,1059.87 1496.18,1051.71 \n",
       "  1501.05,1043.55 1505.7,1035.39 1509.71,1028.02 1510.13,1027.24 1514.26,1019.08 1518.17,1010.92 1521.88,1002.76 1525.38,994.604 1528.67,986.445 1529.88,983.249 \n",
       "  1531.71,978.287 1534.52,970.129 1537.13,961.971 1539.53,953.813 1541.72,945.654 1543.71,937.496 1545.5,929.338 1547.08,921.18 1548.46,913.022 1549.64,904.863 \n",
       "  1550.05,901.387 1550.6,896.705 1551.34,888.547 1551.89,880.389 1552.24,872.231 1552.39,864.072 1552.34,855.914 1552.09,847.756 1551.64,839.598 1551,831.439 \n",
       "  1550.15,823.281 1550.05,822.542 1549.08,815.123 1547.8,806.965 1546.32,798.807 1544.63,790.648 1542.74,782.49 1540.65,774.332 1538.35,766.174 1535.85,758.016 \n",
       "  1533.14,749.857 1530.23,741.699 1529.88,740.779 1527.06,733.541 1523.66,725.383 1520.05,717.225 1516.24,709.066 1512.22,700.908 1509.71,696.08 1507.94,692.75 \n",
       "  1503.4,684.592 1498.64,676.433 1493.67,668.275 1489.54,661.794 1488.45,660.117 1482.92,651.959 1477.17,643.801 1471.2,635.642 1469.38,633.241 1464.9,627.484 \n",
       "  1458.33,619.326 1451.54,611.168 1449.21,608.457 1444.4,603.01 1436.98,594.851 1429.32,586.693 1429.04,586.402 1421.23,578.535 1412.9,570.377 1408.87,566.533 \n",
       "  1404.22,562.219 1395.18,554.06 1388.7,548.365 1385.82,545.902 1376.03,537.744 1368.53,531.644 1365.93,529.586 1355.35,521.427 1348.36,516.165 1344.4,513.269 \n",
       "  1332.99,505.111 1328.19,501.758 1321.11,496.953 1308.81,488.795 1308.02,488.286 1295.87,480.636 1287.85,475.698 1282.46,472.478 1268.5,464.32 1267.68,463.851 \n",
       "  1253.82,456.162 1247.52,452.738 1238.5,448.004 1227.35,442.255 1222.5,439.845 1207.18,432.366 1205.73,431.687 1188.07,423.529 1187.01,423.046 1169.43,415.371 \n",
       "  1166.84,414.258 1149.76,407.213 1146.67,405.961 1128.92,399.054 1126.5,398.129 1106.77,390.896 1106.33,390.738 1086.16,383.784 1082.99,382.738 1065.99,377.237 \n",
       "  1057.38,374.58 1045.83,371.074 1029.69,366.421 1025.66,365.277 1005.49,359.852 999.237,358.263 985.318,354.782 965.47,350.105 965.149,350.031 944.98,345.641 \n",
       "  926.813,341.947 924.811,341.546 904.642,337.792 884.473,334.321 881.107,333.789 864.304,331.174 844.135,328.314 823.966,325.733 823.067,325.63 803.797,323.464 \n",
       "  783.628,321.472 763.459,319.755 743.29,318.312 728.787,317.472 723.121,317.149 702.952,316.269 682.783,315.66 662.614,315.322 642.445,315.254 622.276,315.457 \n",
       "  602.107,315.931 581.938,316.675 566.104,317.472 561.769,317.694 541.6,318.999 521.431,320.579 501.262,322.434 481.093,324.564 472.144,325.63 460.924,326.989 \n",
       "  440.755,329.709 420.585,332.708 413.938,333.789 400.416,336.021 380.247,339.633 368.271,341.947 360.078,343.555 339.909,347.8 329.654,350.105 319.74,352.369 \n",
       "  299.571,357.268 295.703,358.263 279.402,362.527 265.309,366.421 259.233,368.128 239.064,374.096 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip0202)\" style=\"stroke:#71196d; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  239.064,325.456 259.233,320.029 269.243,317.472 279.402,314.915 299.571,310.11 303.113,309.314 319.74,305.631 339.909,301.43 341.313,301.156 360.078,297.548 \n",
       "  380.247,293.933 385.877,292.998 400.416,290.616 420.585,287.571 440.36,284.839 440.755,284.786 460.924,282.294 481.093,280.059 501.262,278.078 517.602,276.681 \n",
       "  521.431,276.358 541.6,274.909 561.769,273.713 581.938,272.768 602.107,272.075 622.276,271.634 642.445,271.445 662.614,271.508 682.783,271.823 702.952,272.39 \n",
       "  723.121,273.209 743.29,274.279 763.459,275.602 777.275,276.681 783.628,277.184 803.797,279.037 823.966,281.145 844.135,283.508 854.388,284.839 864.304,286.145 \n",
       "  884.473,289.061 904.642,292.235 909.119,292.998 924.811,295.708 944.98,299.454 953.542,301.156 965.149,303.497 985.318,307.831 991.817,309.314 1005.49,312.479 \n",
       "  1025.66,317.419 1025.86,317.472 1045.83,322.708 1056.42,325.63 1065.99,328.314 1084.62,333.789 1086.16,334.25 1106.33,340.554 1110.6,341.947 1126.5,347.224 \n",
       "  1134.83,350.105 1146.67,354.27 1157.58,358.263 1166.84,361.71 1179.02,366.421 1187.01,369.563 1199.3,374.58 1207.18,377.851 1218.53,382.738 1227.35,386.597 \n",
       "  1236.83,390.896 1247.52,395.823 1254.29,399.054 1267.68,405.556 1270.99,407.213 1286.97,415.371 1287.85,415.831 1302.2,423.529 1308.02,426.712 1316.85,431.687 \n",
       "  1328.19,438.202 1330.97,439.845 1344.49,448.004 1348.36,450.383 1357.49,456.162 1368.53,463.296 1370.07,464.32 1382.1,472.478 1388.7,477.047 1393.74,480.636 \n",
       "  1404.97,488.795 1408.87,491.694 1415.76,496.953 1426.22,505.111 1429.04,507.363 1436.25,513.269 1445.98,521.427 1449.21,524.202 1455.32,529.586 1464.36,537.744 \n",
       "  1469.38,542.388 1473.08,545.902 1481.46,554.06 1489.54,562.141 1489.62,562.219 1497.37,570.377 1504.92,578.535 1509.71,583.877 1512.18,586.693 1519.13,594.851 \n",
       "  1525.87,603.01 1529.88,608.019 1532.35,611.168 1538.52,619.326 1544.5,627.484 1550.05,635.335 1550.26,635.642 1555.71,643.801 1560.95,651.959 1565.99,660.117 \n",
       "  1570.22,667.236 1570.82,668.275 1575.37,676.433 1579.72,684.592 1583.87,692.75 1587.83,700.908 1590.39,706.468 1591.56,709.066 1595.05,717.225 1598.35,725.383 \n",
       "  1601.46,733.541 1604.38,741.699 1607.1,749.857 1609.64,758.016 1610.56,761.218 1611.95,766.174 1614.06,774.332 1615.98,782.49 1617.71,790.648 1619.26,798.807 \n",
       "  1620.62,806.965 1621.79,815.123 1622.77,823.281 1623.57,831.439 1624.18,839.598 1624.6,847.756 1624.83,855.914 1624.88,864.072 1624.74,872.231 1624.41,880.389 \n",
       "  1623.89,888.547 1623.19,896.705 1622.3,904.863 1621.22,913.022 1619.96,921.18 1618.51,929.338 1616.87,937.496 1615.04,945.654 1613.03,953.813 1610.83,961.971 \n",
       "  1610.56,962.893 1608.4,970.129 1605.77,978.287 1602.94,986.445 1599.93,994.604 1596.73,1002.76 1593.33,1010.92 1590.39,1017.61 1589.73,1019.08 1585.87,1027.24 \n",
       "  1581.82,1035.39 1577.57,1043.55 1573.12,1051.71 1570.22,1056.81 1568.44,1059.87 1563.5,1068.03 1558.35,1076.19 1553.01,1084.34 1550.05,1088.7 1547.41,1092.5 \n",
       "  1541.54,1100.66 1535.46,1108.82 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip0202)\" style=\"stroke:#83206b; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  1609.27,1108.82 1610.56,1106.98 1614.87,1100.66 1620.26,1092.5 1625.46,1084.34 1630.47,1076.19 1630.73,1075.75 1635.2,1068.03 1639.74,1059.87 1644.1,1051.71 \n",
       "  1648.27,1043.55 1650.9,1038.19 1652.24,1035.39 1655.97,1027.24 1659.52,1019.08 1662.89,1010.92 1666.09,1002.76 1669.1,994.604 1671.07,988.944 1671.92,986.445 \n",
       "  1674.52,978.287 1676.94,970.129 1679.19,961.971 1681.26,953.813 1683.16,945.654 1684.88,937.496 1686.42,929.338 1687.79,921.18 1688.98,913.022 1689.99,904.863 \n",
       "  1690.83,896.705 1691.23,891.72 1691.49,888.547 1691.96,880.389 1692.27,872.231 1692.4,864.072 1692.35,855.914 1692.14,847.756 1691.75,839.598 1691.23,832.171 \n",
       "  1691.18,831.439 1690.43,823.281 1689.51,815.123 1688.41,806.965 1687.13,798.807 1685.67,790.648 1684.04,782.49 1682.23,774.332 1680.25,766.174 1678.09,758.016 \n",
       "  1675.75,749.857 1673.24,741.699 1671.07,735.106 1670.54,733.541 1667.62,725.383 1664.51,717.225 1661.23,709.066 1657.77,700.908 1654.13,692.75 1650.9,685.856 \n",
       "  1650.29,684.592 1646.21,676.433 1641.94,668.275 1637.49,660.117 1632.86,651.959 1630.73,648.351 1627.99,643.801 1622.88,635.642 1617.59,627.484 1612.11,619.326 \n",
       "  1610.56,617.093 1606.36,611.168 1600.38,603.01 1594.21,594.851 1590.39,589.951 1587.79,586.693 1581.1,578.535 1574.21,570.377 1570.22,565.779 1567.06,562.219 \n",
       "  1559.62,554.06 1551.98,545.902 1550.05,543.895 1544.01,537.744 1535.79,529.586 1529.88,523.87 1527.3,521.427 1518.47,513.269 1509.71,505.363 1509.43,505.111 \n",
       "  1499.96,496.953 1490.28,488.795 1489.54,488.187 1480.17,480.636 1469.81,472.478 1469.38,472.141 1458.99,464.32 1449.21,457.104 1447.9,456.162 1436.33,448.004 \n",
       "  1429.04,442.965 1424.41,439.845 1412.06,431.687 1408.87,429.618 1399.22,423.529 1388.7,417.005 1385.99,415.371 1372.21,407.213 1368.53,405.07 1357.89,399.054 \n",
       "  1348.36,393.756 1343.07,390.896 1328.19,383.002 1327.68,382.738 1311.57,374.58 1308.02,372.811 1294.8,366.421 1287.85,363.121 1277.31,358.263 1267.68,353.904 \n",
       "  1259.02,350.105 1247.52,345.137 1239.87,341.947 1227.35,336.799 1219.76,333.789 1207.18,328.871 1198.58,325.63 1187.01,321.334 1176.21,317.472 1166.84,314.171 \n",
       "  1152.51,309.314 1146.67,307.364 1127.31,301.156 1126.5,300.9 1106.33,294.787 1100.16,292.998 1086.16,288.996 1070.94,284.839 1065.99,283.508 1045.83,278.334 \n",
       "  1039.05,276.681 1025.66,273.46 1005.49,268.862 1003.92,268.523 985.318,264.57 965.149,260.531 964.263,260.365 944.98,256.79 924.811,253.296 918.048,252.207 \n",
       "  904.642,250.076 884.473,247.112 864.304,244.391 861.52,244.048 844.135,241.939 823.966,239.73 803.797,237.761 783.628,236.03 781.743,235.89 763.459,234.555 \n",
       "  743.29,233.318 723.121,232.316 702.952,231.55 682.783,231.02 662.614,230.725 642.445,230.666 622.276,230.843 602.107,231.256 581.938,231.904 561.769,232.787 \n",
       "  541.6,233.907 521.431,235.262 513.465,235.89 501.262,236.865 481.093,238.716 460.924,240.805 440.755,243.133 433.559,244.048 420.585,245.721 400.416,248.564 \n",
       "  380.247,251.648 376.864,252.207 360.078,255.012 339.909,258.629 330.843,260.365 319.74,262.52 299.571,266.682 291.157,268.523 279.402,271.13 259.233,275.854 \n",
       "  255.881,276.681 239.064,280.889 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip0202)\" style=\"stroke:#972765; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  239.064,239.491 254.468,235.89 259.233,234.79 279.402,230.372 292.13,227.732 299.571,226.208 319.74,222.311 334.809,219.574 339.909,218.659 360.078,215.27 \n",
       "  380.247,212.112 385.042,211.415 400.416,209.211 420.585,206.545 440.755,204.106 448.497,203.257 460.924,201.911 481.093,199.951 501.262,198.214 521.431,196.702 \n",
       "  541.6,195.413 547.557,195.099 561.769,194.358 581.938,193.528 602.107,192.92 622.276,192.532 642.445,192.366 662.614,192.421 682.783,192.698 702.952,193.196 \n",
       "  723.121,193.916 743.29,194.856 747.504,195.099 763.459,196.03 783.628,197.43 803.797,199.054 823.966,200.903 844.135,202.976 846.609,203.257 864.304,205.297 \n",
       "  884.473,207.849 904.642,210.628 909.923,211.415 924.811,213.662 944.98,216.936 960.167,219.574 965.149,220.45 985.318,224.231 1002.91,227.732 1005.49,228.251 \n",
       "  1025.66,232.552 1040.5,235.89 1045.83,237.104 1065.99,241.939 1074.38,244.048 1086.16,247.052 1105.48,252.207 1106.33,252.438 1126.5,258.138 1134.05,260.365 \n",
       "  1146.67,264.135 1160.77,268.523 1166.84,270.436 1185.88,276.681 1187.01,277.056 1207.18,284.019 1209.47,284.839 1227.35,291.328 1231.79,292.998 1247.52,298.993 \n",
       "  1253,301.156 1267.68,307.031 1273.21,309.314 1287.85,315.456 1292.51,317.472 1308.02,324.288 1310.99,325.63 1328.19,333.545 1328.71,333.789 1345.66,341.947 \n",
       "  1348.36,343.266 1361.96,350.105 1368.53,353.465 1377.66,358.263 1388.7,364.161 1392.82,366.421 1407.44,374.58 1408.87,375.393 1421.47,382.738 1429.04,387.221 \n",
       "  1435.08,390.896 1448.26,399.054 1449.21,399.649 1460.92,407.213 1469.38,412.774 1473.23,415.371 1485.11,423.529 1489.54,426.626 1496.61,431.687 1507.79,439.845 \n",
       "  1509.71,441.278 1518.54,448.004 1529.04,456.162 1529.88,456.826 1539.12,464.32 1548.98,472.478 1550.05,473.386 1558.44,480.636 1567.68,488.795 1570.22,491.09 \n",
       "  1576.57,496.953 1585.22,505.111 1590.39,510.098 1593.6,513.269 1601.69,521.427 1609.58,529.586 1610.56,530.625 1617.14,537.744 1624.49,545.902 1630.73,553.005 \n",
       "  1631.64,554.06 1638.47,562.219 1645.12,570.377 1650.9,577.656 1651.58,578.535 1657.74,586.693 1663.72,594.851 1669.52,603.01 1671.07,605.251 1675.06,611.168 \n",
       "  1680.4,619.326 1685.56,627.484 1690.54,635.642 1691.23,636.826 1695.26,643.801 1699.81,651.959 1704.17,660.117 1708.37,668.275 1711.4,674.433 1712.37,676.433 \n",
       "  1716.15,684.592 1719.75,692.75 1723.19,700.908 1726.46,709.066 1729.56,717.225 1731.57,722.842 1732.47,725.383 1735.18,733.541 1737.72,741.699 1740.09,749.857 \n",
       "  1742.3,758.016 1744.34,766.174 1746.21,774.332 1747.92,782.49 1749.46,790.648 1750.84,798.807 1751.74,804.925 1752.04,806.965 1753.06,815.123 1753.92,823.281 \n",
       "  1754.61,831.439 1755.15,839.598 1755.51,847.756 1755.72,855.914 1755.76,864.072 1755.64,872.231 1755.35,880.389 1754.9,888.547 1754.29,896.705 1753.51,904.863 \n",
       "  1752.57,913.022 1751.74,919.14 1751.46,921.18 1750.17,929.338 1748.71,937.496 1747.09,945.654 1745.3,953.813 1743.34,961.971 1741.21,970.129 1738.92,978.287 \n",
       "  1736.47,986.445 1733.84,994.604 1731.57,1001.24 1731.04,1002.76 1728.03,1010.92 1724.85,1019.08 1721.49,1027.24 1717.97,1035.39 1714.28,1043.55 1711.4,1049.63 \n",
       "  1710.4,1051.71 1706.29,1059.87 1702.01,1068.03 1697.56,1076.19 1692.93,1084.34 1691.23,1087.22 1688.07,1092.5 1683,1100.66 1677.75,1108.82 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip0202)\" style=\"stroke:#a72d5f; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  1741.98,1108.82 1746.94,1100.66 1751.73,1092.5 1751.74,1092.47 1756.27,1084.34 1760.64,1076.19 1764.85,1068.03 1768.9,1059.87 1771.91,1053.55 1772.77,1051.71 \n",
       "  1776.43,1043.55 1779.92,1035.39 1783.26,1027.24 1786.43,1019.08 1789.44,1010.92 1792.08,1003.38 1792.29,1002.76 1794.94,994.604 1797.42,986.445 1799.75,978.287 \n",
       "  1801.92,970.129 1803.93,961.971 1805.79,953.813 1807.49,945.654 1809.03,937.496 1810.41,929.338 1811.63,921.18 1812.25,916.445 1812.69,913.022 1813.58,904.863 \n",
       "  1814.32,896.705 1814.9,888.547 1815.33,880.389 1815.6,872.231 1815.71,864.072 1815.68,855.914 1815.48,847.756 1815.13,839.598 1814.63,831.439 1813.97,823.281 \n",
       "  1813.15,815.123 1812.25,807.51 1812.18,806.965 1811.04,798.807 1809.74,790.648 1808.28,782.49 1806.66,774.332 1804.88,766.174 1802.95,758.016 1800.86,749.857 \n",
       "  1798.61,741.699 1796.2,733.541 1793.63,725.383 1792.08,720.73 1790.89,717.225 1787.96,709.066 1784.86,700.908 1781.61,692.75 1778.19,684.592 1774.62,676.433 \n",
       "  1771.91,670.517 1770.87,668.275 1766.9,660.117 1762.77,651.959 1758.47,643.801 1754.02,635.642 1751.74,631.628 1749.35,627.484 1744.48,619.326 1739.44,611.168 \n",
       "  1734.23,603.01 1731.57,598.972 1728.81,594.851 1723.16,586.693 1717.35,578.535 1711.4,570.425 1711.37,570.377 1705.1,562.219 1698.65,554.06 1692.04,545.902 \n",
       "  1691.23,544.938 1685.13,537.744 1678.03,529.586 1671.07,521.773 1670.75,521.427 1663.15,513.269 1655.37,505.111 1650.9,500.523 1647.34,496.953 1639.04,488.795 \n",
       "  1630.73,480.806 1630.55,480.636 1621.7,472.478 1612.66,464.32 1610.56,462.463 1603.28,456.162 1593.67,448.004 1590.39,445.274 1583.73,439.845 1573.51,431.687 \n",
       "  1570.22,429.105 1562.95,423.529 1552.12,415.371 1550.05,413.845 1540.88,407.213 1529.88,399.406 1529.38,399.054 1517.41,390.896 1509.71,385.736 1505.13,382.738 \n",
       "  1492.46,374.58 1489.54,372.735 1479.33,366.421 1469.38,360.371 1465.82,358.263 1451.84,350.105 1449.21,348.591 1437.35,341.947 1429.04,337.366 1422.38,333.789 \n",
       "  1408.87,326.639 1406.91,325.63 1390.84,317.472 1388.7,316.404 1374.13,309.314 1368.53,306.63 1356.79,301.156 1348.36,297.284 1338.76,292.998 1328.19,288.348 \n",
       "  1319.98,284.839 1308.02,279.803 1300.38,276.681 1287.85,271.633 1279.89,268.523 1267.68,263.824 1258.4,260.365 1247.52,256.36 1235.83,252.207 1227.35,249.229 \n",
       "  1212.06,244.048 1207.18,242.416 1187.01,235.91 1186.95,235.89 1166.84,229.723 1160.09,227.732 1146.67,223.823 1131.48,219.574 1126.5,218.199 1106.33,212.858 \n",
       "  1100.64,211.415 1086.16,207.793 1067.19,203.257 1065.99,202.975 1045.83,198.438 1030.21,195.099 1025.66,194.137 1005.49,190.097 988.814,186.941 985.318,186.287 \n",
       "  965.149,182.734 944.98,179.399 940.993,178.783 924.811,176.312 904.642,173.449 884.473,170.802 883,170.624 864.304,168.397 844.135,166.208 823.966,164.233 \n",
       "  803.797,162.471 803.73,162.466 783.628,160.941 763.459,159.622 743.29,158.514 723.121,157.617 702.952,156.931 682.783,156.456 662.614,156.192 642.445,156.139 \n",
       "  622.276,156.297 602.107,156.667 581.938,157.247 561.769,158.039 541.6,159.041 521.431,160.255 501.262,161.68 491.565,162.466 481.093,163.326 460.924,165.194 \n",
       "  440.755,167.276 420.585,169.572 412.126,170.624 400.416,172.098 380.247,174.854 360.078,177.825 354.017,178.783 339.909,181.039 319.74,184.483 306.207,186.941 \n",
       "  299.571,188.161 279.402,192.089 264.775,195.099 259.233,196.253 239.064,200.679 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip0202)\" style=\"stroke:#ba3655; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  239.064,164.019 246.492,162.466 259.233,159.833 279.402,155.875 287.838,154.308 299.571,152.153 319.74,148.658 335.137,146.15 339.909,145.381 360.078,142.338 \n",
       "  380.247,139.502 391.827,137.992 400.416,136.884 420.585,134.487 440.755,132.294 460.924,130.306 466.26,129.833 481.093,128.535 501.262,126.972 521.431,125.61 \n",
       "  541.6,124.451 561.769,123.492 581.938,122.736 602.107,122.181 622.276,121.828 642.445,121.677 662.614,121.727 682.783,121.979 702.952,122.433 723.121,123.089 \n",
       "  743.29,123.946 763.459,125.005 783.628,126.266 803.797,127.728 823.966,129.393 828.73,129.833 844.135,131.275 864.304,133.365 884.473,135.66 903.292,137.992 \n",
       "  904.642,138.161 924.811,140.894 944.98,143.834 959.829,146.15 965.149,146.989 985.318,150.38 1005.49,153.979 1007.23,154.308 1025.66,157.827 1045.83,161.891 \n",
       "  1048.54,162.466 1065.99,166.208 1085.62,170.624 1086.16,170.748 1106.33,175.556 1119.29,178.783 1126.5,180.601 1146.67,185.904 1150.46,186.941 1166.84,191.48 \n",
       "  1179.4,195.099 1187.01,197.318 1206.63,203.257 1207.18,203.425 1227.35,209.834 1232.15,211.415 1247.52,216.533 1256.34,219.574 1267.68,223.532 1279.33,227.732 \n",
       "  1287.85,230.843 1301.25,235.89 1308.02,238.476 1322.18,244.048 1328.19,246.446 1342.21,252.207 1348.36,254.767 1361.43,260.365 1368.53,263.451 1379.88,268.523 \n",
       "  1388.7,272.515 1397.65,276.681 1408.87,281.974 1414.78,284.839 1429.04,291.846 1431.32,292.998 1447.27,301.156 1449.21,302.162 1462.64,309.314 1469.38,312.952 \n",
       "  1477.54,317.472 1489.54,324.219 1492,325.63 1505.95,333.789 1509.71,336.02 1519.47,341.947 1529.88,348.375 1532.62,350.105 1545.34,358.263 1550.05,361.337 \n",
       "  1557.68,366.421 1569.71,374.58 1570.22,374.931 1581.3,382.738 1590.39,389.252 1592.63,390.896 1603.59,399.054 1610.56,404.341 1614.27,407.213 1624.62,415.371 \n",
       "  1630.73,420.277 1634.7,423.529 1644.47,431.687 1650.9,437.156 1653.99,439.845 1663.21,448.004 1671.07,455.092 1672.23,456.162 1680.91,464.32 1689.42,472.478 \n",
       "  1691.23,474.252 1697.63,480.636 1705.63,488.795 1711.4,494.811 1713.42,496.953 1720.93,505.111 1728.27,513.269 1731.57,517.025 1735.37,521.427 1742.24,529.586 \n",
       "  1748.95,537.744 1751.74,541.227 1755.42,545.902 1761.68,554.06 1767.77,562.219 1771.91,567.913 1773.67,570.377 1779.33,578.535 1784.84,586.693 1790.18,594.851 \n",
       "  1792.08,597.842 1795.3,603.01 1800.24,611.168 1805.01,619.326 1809.63,627.484 1812.25,632.272 1814.06,635.642 1818.29,643.801 1822.36,651.959 1826.28,660.117 \n",
       "  1830.04,668.275 1832.42,673.649 1833.63,676.433 1837.02,684.592 1840.26,692.75 1843.35,700.908 1846.29,709.066 1849.07,717.225 1851.7,725.383 1852.59,728.285 \n",
       "  1854.16,733.541 1856.44,741.699 1858.58,749.857 1860.57,758.016 1862.41,766.174 1864.1,774.332 1865.63,782.49 1867.02,790.648 1868.26,798.807 1869.35,806.965 \n",
       "  1870.28,815.123 1871.07,823.281 1871.71,831.439 1872.2,839.598 1872.53,847.756 1872.72,855.914 1872.76,863.444 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip0202)\" style=\"stroke:#ba3655; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  1872.76,864.282 1872.65,872.231 1872.38,880.389 1871.97,888.547 1871.41,896.705 1870.7,904.863 1869.83,913.022 1868.82,921.18 1867.66,929.338 1866.35,937.496 \n",
       "  1864.88,945.654 1863.27,953.813 1861.51,961.971 1859.6,970.129 1857.53,978.287 1855.32,986.445 1852.96,994.604 1852.59,995.806 1850.41,1002.76 1847.7,1010.92 \n",
       "  1844.84,1019.08 1841.83,1027.24 1838.66,1035.39 1835.34,1043.55 1832.42,1050.43 1831.86,1051.71 1828.18,1059.87 1824.34,1068.03 1820.34,1076.19 1816.19,1084.34 \n",
       "  1812.25,1091.82 1811.88,1092.5 1807.34,1100.66 1802.65,1108.82 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip0202)\" style=\"stroke:#cb4148; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  1860.28,1108.82 1864.75,1100.66 1869.06,1092.5 1872.76,1085.26 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip0202)\" style=\"stroke:#cb4148; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  1872.76,638.828 1871.16,635.642 1866.92,627.484 1862.53,619.326 1858,611.168 1853.31,603.01 1852.59,601.793 1848.4,594.851 1843.33,586.693 1838.1,578.535 \n",
       "  1832.73,570.377 1832.42,569.921 1827.11,562.219 1821.33,554.06 1815.39,545.902 1812.25,541.691 1809.25,537.744 1802.9,529.586 1796.38,521.427 1792.08,516.163 \n",
       "  1789.67,513.269 1782.72,505.111 1775.61,496.953 1771.91,492.799 1768.28,488.795 1760.71,480.636 1752.98,472.478 1751.74,471.197 1744.97,464.32 1736.76,456.162 \n",
       "  1731.57,451.106 1728.33,448.004 1719.63,439.845 1711.4,432.278 1710.75,431.687 1701.54,423.529 1692.15,415.371 1691.23,414.586 1682.43,407.213 1672.51,399.054 \n",
       "  1671.07,397.889 1662.24,390.896 1651.76,382.738 1650.9,382.075 1640.91,374.58 1630.73,367.069 1629.83,366.421 1618.36,358.263 1610.56,352.806 1606.62,350.105 \n",
       "  1594.52,341.947 1590.39,339.207 1582.05,333.789 1570.22,326.22 1569.28,325.63 1556.05,317.472 1550.05,313.832 1542.45,309.314 1529.88,301.962 1528.47,301.156 \n",
       "  1514,292.998 1509.71,290.615 1499.07,284.839 1489.54,279.738 1483.69,276.681 1469.38,269.302 1467.83,268.523 1451.38,260.365 1449.21,259.302 1434.33,252.207 \n",
       "  1429.04,249.712 1416.69,244.048 1408.87,240.506 1398.4,235.89 1388.7,231.667 1379.41,227.732 1368.53,223.183 1359.65,219.574 1348.36,215.04 1339.07,211.415 \n",
       "  1328.19,207.225 1317.58,203.257 1308.02,199.726 1295.11,195.099 1287.85,192.532 1271.55,186.941 1267.68,185.631 1247.52,179.016 1246.78,178.783 1227.35,172.692 \n",
       "  1220.51,170.624 1207.18,166.635 1192.73,162.466 1187.01,160.835 1166.84,155.294 1163.11,154.308 1146.67,150.015 1131.27,146.15 1126.5,144.968 1106.33,140.172 \n",
       "  1096.75,137.992 1086.16,135.609 1065.99,131.274 1058.96,129.833 1045.83,127.174 1025.66,123.29 1016.81,121.675 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip0202)\" style=\"stroke:#d84c3d; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  1169.91,121.675 1187.01,126.165 1200.47,129.833 1207.18,131.682 1227.35,137.445 1229.2,137.992 1247.52,143.472 1256.17,146.15 1267.68,149.754 1281.77,154.308 \n",
       "  1287.85,156.297 1306.13,162.466 1308.02,163.112 1328.19,170.212 1329.33,170.624 1348.36,177.608 1351.47,178.783 1368.53,185.303 1372.7,186.941 1388.7,193.306 \n",
       "  1393.08,195.099 1408.87,201.63 1412.7,203.257 1429.04,210.287 1431.59,211.415 1449.21,219.29 1449.83,219.574 1467.4,227.732 1469.38,228.662 1484.37,235.89 \n",
       "  1489.54,238.416 1500.81,244.048 1509.71,248.563 1516.74,252.207 1529.88,259.118 1532.2,260.365 1547.16,268.523 1550.05,270.121 1561.66,276.681 1570.22,281.591 \n",
       "  1575.77,284.839 1589.49,292.998 1590.39,293.538 1602.76,301.156 1610.56,306.03 1615.71,309.314 1628.3,317.472 1630.73,319.066 1640.51,325.63 1650.9,332.707 \n",
       "  1652.45,333.789 1664.01,341.947 1671.07,347.007 1675.3,350.105 1686.28,358.263 1691.23,362.005 1696.97,366.421 1707.39,374.58 1711.4,377.773 1717.52,382.738 \n",
       "  1727.41,390.896 1731.57,394.39 1737.03,399.054 1746.4,407.213 1751.74,411.95 1755.53,415.371 1764.41,423.529 1771.91,430.557 1773.1,431.687 1781.49,439.845 \n",
       "  1789.73,448.004 1792.08,450.381 1797.7,456.162 1805.48,464.32 1812.25,471.574 1813.08,472.478 1820.41,480.636 1827.59,488.795 1832.42,494.408 1834.57,496.953 \n",
       "  1841.32,505.111 1847.92,513.269 1852.59,519.179 1854.33,521.427 1860.52,529.586 1866.56,537.744 1872.45,545.902 1872.76,546.34 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip0202)\" style=\"stroke:#e55c2f; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  1872.76,475.407 1870.21,472.478 1862.97,464.32 1855.58,456.162 1852.59,452.917 1847.97,448.004 1840.15,439.845 1832.42,431.929 1832.18,431.687 1823.92,423.529 \n",
       "  1815.5,415.371 1812.25,412.279 1806.83,407.213 1797.95,399.054 1792.08,393.754 1788.86,390.896 1779.5,382.738 1771.91,376.237 1769.94,374.58 1760.09,366.421 \n",
       "  1751.74,359.627 1750.04,358.263 1739.66,350.105 1731.57,343.841 1729.08,341.947 1718.18,333.789 1711.4,328.8 1707.02,325.63 1695.56,317.472 1691.23,314.44 \n",
       "  1683.78,309.314 1671.75,301.156 1671.07,300.701 1659.3,292.998 1650.9,287.569 1646.58,284.839 1633.51,276.681 1630.73,274.971 1620.03,268.523 1610.56,262.891 \n",
       "  1606.22,260.365 1592.02,252.207 1590.39,251.284 1577.35,244.048 1570.22,240.147 1562.27,235.89 1550.05,229.428 1546.77,227.732 1530.79,219.574 1529.88,219.117 \n",
       "  1514.25,211.415 1509.71,209.21 1497.19,203.257 1489.54,199.67 1479.57,195.099 1469.38,190.484 1461.35,186.941 1449.21,181.639 1442.49,178.783 1429.04,173.124 \n",
       "  1422.94,170.624 1408.87,164.927 1402.63,162.466 1388.7,157.035 1381.51,154.308 1368.53,149.44 1359.51,146.15 1348.36,142.131 1336.54,137.992 1328.19,135.099 \n",
       "  1312.53,129.833 1308.02,128.333 1287.85,121.828 1287.37,121.675 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip0202)\" style=\"stroke:#ef6d21; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  1386.33,121.675 1388.7,122.534 1408.29,129.833 1408.87,130.05 1429.04,137.852 1429.39,137.992 1449.21,145.948 1449.7,146.15 1469.29,154.308 1469.38,154.344 \n",
       "  1488.19,162.466 1489.54,163.058 1506.46,170.624 1509.71,172.098 1524.14,178.783 1529.88,181.475 1541.27,186.941 1550.05,191.203 1557.9,195.099 1570.22,201.294 \n",
       "  1574.04,203.257 1589.72,211.415 1590.39,211.766 1604.9,219.574 1610.56,222.659 1619.67,227.732 1630.73,233.964 1634.07,235.89 1648.07,244.048 1650.9,245.72 \n",
       "  1661.66,252.207 1671.07,257.953 1674.94,260.365 1687.85,268.523 1691.23,270.687 1700.42,276.681 1711.4,283.954 1712.72,284.839 1724.64,292.998 1731.57,297.809 \n",
       "  1736.31,301.156 1747.68,309.314 1751.74,312.274 1758.75,317.472 1769.59,325.63 1771.91,327.405 1780.11,333.789 1790.44,341.947 1792.08,343.265 1800.45,350.105 \n",
       "  1810.28,358.263 1812.25,359.924 1819.82,366.421 1829.17,374.58 1832.42,377.465 1838.26,382.738 1847.14,390.896 1852.59,395.98 1855.82,399.054 1864.26,407.213 \n",
       "  1872.55,415.371 1872.76,415.577 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip0202)\" style=\"stroke:#f68211; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  1872.76,362.896 1867.54,358.263 1858.2,350.105 1852.59,345.279 1848.65,341.947 1838.84,333.789 1832.42,328.521 1828.83,325.63 1818.55,317.472 1812.25,312.545 \n",
       "  1808.04,309.314 1797.27,301.156 1792.08,297.283 1786.23,292.998 1774.95,284.839 1771.91,282.676 1763.35,276.681 1751.74,268.671 1751.52,268.523 1739.32,260.365 \n",
       "  1731.57,255.256 1726.86,252.207 1714.09,244.048 1711.4,242.355 1700.95,235.89 1691.23,229.958 1687.52,227.732 1673.72,219.574 1671.07,218.026 1659.52,211.415 \n",
       "  1650.9,206.544 1644.96,203.257 1630.73,195.468 1630.04,195.099 1614.63,186.941 1610.56,184.81 1598.79,178.783 1590.39,174.528 1582.51,170.624 1570.22,164.606 \n",
       "  1565.75,162.466 1550.05,155.03 1548.49,154.308 1530.67,146.15 1529.88,145.793 1512.25,137.992 1509.71,136.883 1493.21,129.833 1489.54,128.282 1473.53,121.675 \n",
       "  \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip0202)\" style=\"stroke:#fa9607; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  1552.39,121.675 1570.22,129.745 1570.41,129.833 1587.85,137.992 1590.39,139.191 1604.79,146.15 1610.56,148.97 1621.25,154.308 1630.73,159.093 1637.27,162.466 \n",
       "  1650.9,169.571 1652.88,170.624 1668.03,178.783 1671.07,180.436 1682.77,186.941 1691.23,191.701 1697.16,195.099 1711.22,203.257 1711.4,203.368 1724.84,211.415 \n",
       "  1731.57,215.499 1738.17,219.574 1751.2,227.732 1751.74,228.072 1763.85,235.89 1771.91,241.161 1776.25,244.048 1788.34,252.207 1792.08,254.765 1800.13,260.365 \n",
       "  1811.69,268.523 1812.25,268.923 1822.91,276.681 1832.42,283.698 1833.94,284.839 1844.66,292.998 1852.59,299.123 1855.18,301.156 1865.41,309.314 1872.76,315.252 \n",
       "  \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip0202)\" style=\"stroke:#fbac11; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  1872.76,271.443 1868.88,268.523 1857.89,260.365 1852.59,256.481 1846.65,252.207 1835.17,244.048 1832.42,242.116 1823.39,235.89 1812.25,228.308 1811.39,227.732 \n",
       "  1799.03,219.574 1792.08,215.039 1786.42,211.415 1773.53,203.257 1771.91,202.246 1760.27,195.099 1751.74,189.93 1746.72,186.941 1732.85,178.783 1731.57,178.039 \n",
       "  1718.58,170.624 1711.4,166.581 1703.97,162.466 1691.23,155.505 1689,154.308 1673.62,146.15 1671.07,144.813 1657.79,137.992 1650.9,134.486 1641.56,129.833 \n",
       "  1630.73,124.5 1624.87,121.675 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip0202)\" style=\"stroke:#f9c32a; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  1692.39,121.675 1708,129.833 1711.4,131.63 1723.22,137.992 1731.57,142.543 1738.07,146.15 1751.74,153.821 1752.59,154.308 1766.7,162.466 1771.91,165.513 \n",
       "  1780.49,170.624 1792.08,177.607 1794,178.783 1807.14,186.941 1812.25,190.151 1819.99,195.099 1832.42,203.142 1832.59,203.257 1844.83,211.415 1852.59,216.647 \n",
       "  1856.85,219.574 1868.59,227.732 1872.76,230.664 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip0202)\" style=\"stroke:#f5d949; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  1872.76,192.364 1864.55,186.941 1852.59,179.124 1852.06,178.783 1839.2,170.624 1832.42,166.367 1826.09,162.466 1812.71,154.308 1812.25,154.03 1798.94,146.15 \n",
       "  1792.08,142.13 1784.89,137.992 1771.91,130.61 1770.52,129.833 1755.76,121.675 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip0202)\" style=\"stroke:#f2ee74; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  1815.71,121.675 1829.71,129.833 1832.42,131.426 1843.37,137.992 1852.59,143.574 1856.77,146.15 1869.85,154.308 1872.76,156.137 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip0202)\" style=\"stroke:#cb4148; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  278.066,121.675 259.233,125.207 239.064,129.191 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip0202)\" style=\"stroke:#060419; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  570.191,643.801 561.769,644.887 541.6,648.181 522.492,651.959 521.431,652.177 501.262,657.044 490.169,660.117 481.093,662.735 464.083,668.275 460.924,669.348 \n",
       "  442.206,676.433 440.755,677.008 423.364,684.592 420.585,685.86 406.782,692.75 400.416,696.084 391.927,700.908 380.247,707.891 378.424,709.066 366.428,717.225 \n",
       "  360.078,721.793 355.428,725.383 345.47,733.541 339.909,738.396 336.366,741.699 328.188,749.857 320.585,758.016 319.74,758.995 313.924,766.174 307.854,774.332 \n",
       "  302.323,782.49 299.571,786.988 297.458,790.648 293.257,798.807 289.565,806.965 286.383,815.123 283.709,823.281 281.545,831.439 279.89,839.598 279.402,843.074 \n",
       "  278.78,847.756 278.177,855.914 278.057,864.072 278.418,872.231 279.262,880.389 279.402,881.252 280.654,888.547 282.564,896.705 284.982,904.863 287.91,913.022 \n",
       "  291.347,921.18 295.294,929.338 299.571,937.17 299.76,937.496 305.021,945.654 310.822,953.813 317.162,961.971 319.74,965.028 324.315,970.129 332.205,978.287 \n",
       "  339.909,985.713 340.721,986.445 350.372,994.604 360.078,1002.32 360.677,1002.76 372.344,1010.92 380.247,1016.15 385.016,1019.08 399.016,1027.24 400.416,1028.01 \n",
       "  414.858,1035.39 420.585,1038.19 432.612,1043.55 440.755,1047.03 452.866,1051.71 460.924,1054.7 476.478,1059.87 481.093,1061.34 501.262,1067.04 505.263,1068.03 \n",
       "  521.431,1071.85 541.6,1075.92 543.206,1076.19 561.769,1079.16 581.938,1081.71 602.107,1083.58 614.965,1084.34 622.276,1084.76 642.445,1085.25 662.614,1085.09 \n",
       "  680.917,1084.34 682.783,1084.27 702.952,1082.73 723.121,1080.52 743.29,1077.63 751.441,1076.19 763.459,1073.97 783.628,1069.56 789.64,1068.03 803.797,1064.28 \n",
       "  818.47,1059.87 823.966,1058.15 842.271,1051.71 844.135,1051.03 862.513,1043.55 864.304,1042.79 880.146,1035.39 884.473,1033.28 895.809,1027.24 904.642,1022.29 \n",
       "  909.948,1019.08 922.738,1010.92 924.811,1009.52 934.142,1002.76 944.766,994.604 944.98,994.428 954.114,986.445 962.856,978.287 965.149,975.992 970.645,970.129 \n",
       "  977.737,961.971 984.272,953.813 985.318,952.385 989.965,945.654 995.074,937.496 999.658,929.338 1003.72,921.18 1005.49,917.1 1007.16,913.022 1010.01,904.863 \n",
       "  1012.36,896.705 1014.22,888.547 1015.58,880.389 1016.44,872.231 1016.82,864.072 1016.69,855.914 1016.07,847.756 1014.96,839.598 1013.35,831.439 1011.24,823.281 \n",
       "  1008.64,815.123 1005.55,806.965 1005.49,806.824 1001.75,798.807 997.432,790.648 992.585,782.49 987.214,774.332 985.318,771.708 981.074,766.174 974.26,758.016 \n",
       "  966.891,749.857 965.149,748.065 958.559,741.699 949.521,733.541 944.98,729.695 939.533,725.383 928.592,717.225 924.811,714.56 916.428,709.066 904.642,701.744 \n",
       "  903.187,700.908 888.247,692.75 884.473,690.786 871.51,684.592 864.304,681.303 852.593,676.433 844.135,673.068 830.79,668.275 823.966,665.926 805.05,660.117 \n",
       "  803.797,659.748 783.628,654.52 772.163,651.959 763.459,650.088 743.29,646.447 725.181,643.801 723.121,643.511 702.952,641.339 682.783,639.836 662.614,639.001 \n",
       "  642.445,638.834 622.276,639.335 602.107,640.504 581.938,642.342 570.191,643.801 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip0202)\" style=\"stroke:#ff0000; stroke-width:12; stroke-opacity:1; fill:none\" points=\"\n",
       "  239.064,9005.97 259.233,8715.89 279.402,8430.62 299.571,8150.17 319.74,7874.54 339.909,7603.71 360.078,7337.71 380.247,7076.52 400.416,6820.14 420.585,6568.58 \n",
       "  440.755,6321.83 460.924,6079.89 481.093,5842.77 501.262,5610.47 521.431,5382.98 541.6,5160.3 561.769,4942.44 581.938,4729.4 602.107,4521.17 622.276,4317.75 \n",
       "  642.445,4119.15 662.614,3925.36 682.783,3736.39 702.952,3552.23 723.121,3372.88 743.29,3198.36 763.459,3028.64 783.628,2863.74 803.797,2703.65 823.966,2548.38 \n",
       "  844.135,2397.93 864.304,2252.29 884.473,2111.46 904.642,1975.45 924.811,1844.25 944.98,1717.87 965.149,1596.3 985.318,1479.54 1005.49,1367.6 1025.66,1260.48 \n",
       "  1045.83,1158.17 1065.99,1060.67 1086.16,967.992 1106.33,880.125 1126.5,797.073 1146.67,718.836 1166.84,645.413 1187.01,576.805 1207.18,513.012 1227.35,454.033 \n",
       "  1247.52,399.869 1267.68,350.519 1287.85,305.984 1308.02,266.264 1328.19,231.358 1348.36,201.266 1368.53,175.99 1388.7,155.528 1408.87,139.88 1429.04,129.047 \n",
       "  1449.21,123.029 1469.38,121.826 1489.54,125.437 1509.71,133.862 1529.88,147.102 1550.05,165.157 1570.22,188.026 1590.39,215.71 1610.56,248.209 1630.73,285.522 \n",
       "  1650.9,327.65 1671.07,374.592 1691.23,426.349 1711.4,482.921 1731.57,544.307 1751.74,610.508 1771.91,681.523 1792.08,757.353 1812.25,837.997 1832.42,923.457 \n",
       "  1852.59,1013.73 1872.76,1108.82 \n",
       "  \"/>\n",
       "<circle clip-path=\"url(#clip0202)\" cx=\"1096.75\" cy=\"901.518\" r=\"14\" fill=\"#ff0000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"2.56\"/>\n",
       "<path clip-path=\"url(#clip0200)\" d=\"\n",
       "M296.664 357.835 L919.316 357.835 L919.316 176.395 L296.664 176.395  Z\n",
       "  \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n",
       "<polyline clip-path=\"url(#clip0200)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n",
       "  296.664,357.835 919.316,357.835 919.316,176.395 296.664,176.395 296.664,357.835 \n",
       "  \"/>\n",
       "<polyline clip-path=\"url(#clip0200)\" style=\"stroke:#ff0000; stroke-width:12; stroke-opacity:1; fill:none\" points=\"\n",
       "  315.864,236.875 431.064,236.875 \n",
       "  \"/>\n",
       "<g clip-path=\"url(#clip0200)\">\n",
       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:start;\" transform=\"rotate(0, 450.264, 254.375)\" x=\"450.264\" y=\"254.375\">y is below this curve</text>\n",
       "</g>\n",
       "<circle clip-path=\"url(#clip0200)\" cx=\"383.064\" cy=\"297.355\" r=\"21\" fill=\"#ff0000\" fill-rule=\"evenodd\" fill-opacity=\"1\" stroke=\"#000000\" stroke-opacity=\"1\" stroke-width=\"2.56\"/>\n",
       "<g clip-path=\"url(#clip0200)\">\n",
       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:start;\" transform=\"rotate(0, 450.264, 314.855)\" x=\"450.264\" y=\"314.855\">optimum</text>\n",
       "</g>\n",
       "<g clip-path=\"url(#clip0200)\">\n",
       "<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 1464.33, 830.176)\" x=\"1464.33\" y=\"830.176\">somewhere here</text>\n",
       "</g>\n",
       "</svg>\n"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "yRestriction = -(x.-4).^2               #y should be less than this\n",
    "\n",
    "contour( x,y,loss2d',\n",
    "         legend = false,\n",
    "         levels = 21,\n",
    "         title = \"Contour plot of loss function\",\n",
    "         xlabel = \"x\",\n",
    "         ylabel = \"y\",\n",
    "         xlims = (1,5),\n",
    "         ylims = (-1,0),\n",
    "         annotation = (4.0,-0.7,text(\"somewhere here\",8)) )\n",
    "\n",
    "plot!(x,yRestriction,linecolor=:red,linewidth=3,label=\"y is below this curve\",legend=:topleft)\n",
    "scatter!([3.1],[-0.79],markercolor=:red,label=\"optimum\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "minimum at [3.1116826377923497, -0.7891077359995573] and XTOL_REACHED\n"
     ]
    }
   ],
   "source": [
    "function IneqConstrfun(p,grad)     #inequality restriction, <=\n",
    "    (x,y) = (p[1],p[2])\n",
    "    r  = y + (x-4)^2\n",
    "  return r\n",
    "end\n",
    "\n",
    "opt = Opt(:LN_COBYLA, 2)\n",
    "inequality_constraint!(opt,(p,g) -> IneqConstrfun(p,g))\n",
    "min_objective!(opt,(p,g)->lossfun(p,g,0))\n",
    "xtol_rel!(opt,1e-8)\n",
    "\n",
    "(minf,minx,ret) = optimize(opt,[4.0, -0.1])\n",
    "println(\"minimum at $minx and $ret\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "@webio": {
   "lastCommId": null,
   "lastKernelId": null
  },
  "anaconda-cloud": {},
  "kernelspec": {
   "display_name": "Julia 1.4.0",
   "language": "julia",
   "name": "julia-1.4"
  },
  "language_info": {
   "file_extension": ".jl",
   "mimetype": "application/julia",
   "name": "julia",
   "version": "1.4.0"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
